如何在geckodriver中永久安装扩展程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在geckodriver中永久安装扩展程序相关的知识,希望对你有一定的参考价值。

我需要使用扩展来测试Firefox。我想自动化测试并访问几个网站。

我安装了Selenium,它在geckodriver打开。但是,扩展不存在。我可以从about:debugging手动安装它,但问题是我希望Selenium测试启动gecko驱动程序,而扩展已经存在。这该怎么做?如何在geckodriver中永久安装扩展,以便当我从硒中启动geckodriver时它就在那里?

编辑:我还尝试从Firefox扩展网站安装扩展(将其添加到浏览器)。它被添加但是一旦我关闭壁虎窗口,扩展就会在下一次运行中消失。如何永久安装?

答案

注意:OP没有指定语言,因此这个答案适用于Python。其他Selenium WebDriver语言绑定具有类似的机制,用于创建配置文件和添加扩展。


每次实例化驱动程序时都可以安装扩展。

首先,下载您想要的扩展名(XPI文件):https://addons.mozilla.org

然后,在您的代码中...创建一个FirefoxProfile()并使用add_extension()方法添加扩展名。然后,您可以使用该配置文件实例化驱动程序。

例如,这将使用包含“HTTPS Everywhere”扩展名的新创建的配置文件启动Firefox:

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) 
另一答案

您需要通过指定firefox的配置文件路径来启动具有现有配置文件的geckodriver

对于python,你可以这样做:

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

对于C#,你可以这样做:

string path = @"C:UsersusernameAppDataLocalMozillaFirefoxProfilesmyi5go1k.default";
FirefoxProfile ffprofile = new FirefoxProfile(path);
Driver = new FirefoxDriver(ffprofile);
另一答案

您可以在特定的Firefox配置文件中永久安装扩展程序并使用它。为此,您需要按照以下步骤操作:

  • 您需要按照Creating a new Firefox profile on Windows上的说明手动创建一个新的Firefox配置文件(例如FirefoxExtensionProfile)。
  • 手动打开Firefox浏览会话并调用url https://addons.mozilla.org/en-US/firefox/
  • 在搜索框中搜索扩展名,例如HTTPS无处不在。
  • 单击搜索结果并安装/启用(包括以前安装且当前已禁用)扩展。
  • 现在,您可以使用以下Java解决方案打开包含HTTPS Everywhere扩展名的Firefox Profile 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:UtilityBrowserDriversgeckodriver.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"); } } 浏览器快照:

Extension_HTTPS Everywhere

以上是关于如何在geckodriver中永久安装扩展程序的主要内容,如果未能解决你的问题,请参考以下文章

GeckoDriver的安装和使用

text 如何在Ubuntu 16.04上安装GeckoDriver

在 Chrome 中安装扩展程序

如何将 geckodriver 放入 PATH? [复制]

安装firefox驱动geckodriver的验证

如何使用 Geckodriver 在 Selenium 中禁用 Firefox 登录?