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

时间:2019-02-18 20:33:13

标签: selenium firefox selenium-webdriver geckodriver selenium-firefoxdriver

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

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

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

3 个答案:

答案 0 :(得分:2)

您需要通过指定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);

答案 1 :(得分:2)

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


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

首先,从https://addons.mozilla.org下载所需的扩展名(XPI文件)。

然后,在您的代码中...创建一个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) 

答案 2 :(得分:1)

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

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

    • 代码块:

      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");
          }
      }
      
    • 浏览器快照:

Extension_HTTPS Everywhere