selenium 如何在geckodriver中永久安装扩展

jogvjijk  于 2023-01-20  发布在  其他
关注(0)|答案(4)|浏览(186)

我需要使用一个扩展来测试Firefox。我想自动化测试并访问几个网站。
我安装了Selenium,它在geckodriver中打开。但是,扩展不在那里。我可以从about:debugging手动安装它,但问题是,我希望Selenium测试在扩展已经存在时启动gecko驱动程序。如何做到这一点?如何在geckodriver中永久安装扩展,以便当我从Selenium启动geckodriver时它在那里?

**编辑:**我也尝试从Firefox扩展网站安装扩展(添加到浏览器)。它被添加,但一旦我关闭gecko窗口,扩展在下次运行时消失。如何永久安装它?

daolsyd0

daolsyd01#

  • 注意:OP没有指定语言,所以这个答案是针对Python的,其他Selenium WebDriver语言绑定有类似的机制来创建概要文件和添加扩展。*

您可以在每次示例化驱动程序时安装扩展。
首先,从以下位置下载所需的扩展名(XPI文件):https://addons.mozilla.org.
然后,在你的代码中...创建一个FirefoxProfile()并使用add_extension()方法添加扩展,然后你可以使用这个配置文件示例化一个驱动程序。
例如,这将启动Firefox,其中包含一个新创建的包含"HTTPS Everywhere"扩展名的配置文件:

from selenium import webdriver

profile = webdriver.FirefoxProfile() 
profile.add_extension(extension='https_everywhere-2019.1.31-an+fx.xpi')
driver = webdriver.Firefox(firefox_profile=profile)
yqlxgs2m

yqlxgs2m2#

您需要通过指定firefox的配置文件路径来启动带有现有配置文件的geckdriver
对于python,你可以这样做:

profile = FirefoxProfile('/home/student/.mozilla/firefox/gwi6uqpe.Default') // change this path
browser = webdriver.Firefox(firefox_profile=profile)

对于C#,您可以执行以下操作:

string path = @"C:\Users\username\AppData\Local\Mozilla\Firefox\Profiles\myi5go1k.default";
FirefoxProfile ffprofile = new FirefoxProfile(path);
Driver = new FirefoxDriver(ffprofile);
dpiehjr4

dpiehjr43#

我发现这对我很有帮助:

from selenium import webdriver

driver_path = r"G:\Libs\geckoDriver\firefox\geckodriver.exe"
driver = webdriver.Firefox(executable_path=driver_path)

path = r"G:\Libs\ext\uBlock0_1.38.7b5.firefox.signed.xpi"
driver.install_addon(path, temporary=True)

driver.profile = webdriver.FirefoxProfile()
driver.profile.add_extension(path)
driver.profile.set_preference("security.fileuri.strict_origin_policy", False)
driver.profile.update_preferences()`enter code here`

参考:
[Python语言] https://cyruslab.net/2020/08/26/python-adding-extension-to-geckodriver-with-selenium/

a2mppw5e

a2mppw5e4#

您可以在特定的 * Firefox配置文件 * 中永久安装扩展/插件并使用它。要实现这一点,您需要按照以下步骤操作:

  • 您需要按照Creating a new Firefox profile on Windows中的说明手动创建新的 * Firefox配置文件 *(例如FirefoxExtensionProfile)。
  • 手动打开 * Firefox浏览 * 会话并调用url https://addons.mozilla.org/en-US/firefox/
  • 在 * 搜索框 * 中搜索扩展名,例如 * HTTPS Everywhere *。
  • 单击搜索结果并 * 安装*/*启用 *(如果以前安装但当前禁用)扩展。
  • 现在,您可以使用以下 * Java * 解决方案打开包含扩展名 * HTTPS Everywhere * 的 * Firefox配置文件*FirefoxExtensionProfile
  • 代码块:
package A_MozillaFirefox;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.ProfilesIni;

public class A_FirefoxProfile_dc_opt {

 public static void main(String[] args) {

     System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
     ProfilesIni profile = new ProfilesIni();
     FirefoxProfile testprofile = profile.getProfile("FirefoxExtensionProfile");
     FirefoxOptions opt = new FirefoxOptions();
     opt.setProfile(testprofile);
     WebDriver driver =  new FirefoxDriver(opt);
     driver.get("https://www.google.com");
 }
}
  • 浏览器快照:

参考

您可以在以下位置找到一些相关讨论:

  • [Python]如何使用python在selenium中加载chrome驱动程序内的扩展
  • [Python]如何使用Selenium和Python安装Chrome扩展

相关问题