【问题标题】:How to add DesiredCapabilities to GeckoDriver in Selenium-Java 3.11如何在 Selenium-Java 3.11 中将 DesiredCapabilities 添加到 GeckoDriver
【发布时间】:2018-09-29 17:34:45
【问题描述】:

我正在尝试在selenium-java 3.11 中将GeckoDriver 用于firefox。 Firefox 版本是59。一切正常,并且能够调用 firefox 驱动程序。唯一的挑战是我需要将 DesiredCapabilities 添加到我的 firefox 实例中。

最新 selenium 版本中的旧方法 WebDriver driver = new FirefoxDriver(capabilities); 似乎已被弃用,我无法找出指定功能的新方法。

代码如下:

public static WebDriver createDriver(String userAgentKey, String PROXY) {


     File modifyHeaders = null;
     try {
     modifyHeaders =
     ResourceUtils.getFile("classpath:modify_headers-0.7.1.1-fx.xpi");  //am adding the extension using DesiredCapabilities
     } catch (FileNotFoundException e1) {

     e1.printStackTrace();
     }

    Proxy proxy = new Proxy();
    proxy.setHttpProxy(PROXY).setFtpProxy(PROXY).setSslProxy(PROXY);



    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("javascript.enabled", true);
    profile.setPreference("brower.link.open_newwindow", 1);


    profile.setPreference("modifyheaders.config.active", true);
    profile.setPreference("modifyheaders.config.alwaysOn", true);
    profile.setPreference("modifyheaders.headers.count", 1);
    profile.setPreference("modifyheaders.headers.action0", "Add");
    profile.setPreference("modifyheaders.headers.name0", "Proxy-Authorization");
    profile.setPreference("modifyheaders.headers.value0", "Basic dnNodWtsYUBleHBlZGlhLmNvbTpxZWxsYWZraw==");
    profile.setPreference("modifyheaders.headers.enabled0", true);

    profile.addExtension(modifyHeaders);

    DesiredCapabilities cap = DesiredCapabilities.firefox();
    cap.setCapability(FirefoxDriver.PROFILE, profile);
    cap.setCapability(CapabilityType.PROXY, proxy);
    System.setProperty("webdriver.gecko.driver","/Users/vshukla/Music/geckodriver");

    WebDriver driver = new FirefoxDriver(cap);  //this is deprecated


    return driver;

如何使用 DesiredCapabilities 向实例添加扩展?实现这一目标还有哪些其他选择?

【问题讨论】:

    标签: java selenium selenium-webdriver geckodriver mutablecapabilities


    【解决方案1】:

    使用火狐选项:

        FirefoxOptions options = new FirefoxOptions();
        options.setCapability(FirefoxDriver.PROFILE, profile);
        options.setCapability(CapabilityType.PROXY, proxy);
    

    【讨论】:

    • 虽然这提供了设置功能的正确方法,但我仍然没有看到将扩展添加到我的实例中。
    • 你在说 profile.addExtension(modifyHeaders); ?
    • 您也可以为此目的使用此方法:options.setProfile(profile);
    【解决方案2】:

    你快到了。您需要使用 MutableCapabilities 类中的方法 merge()DesiredCapabilities 类型的对象合并到 FirefoxOptions 类型的对象中并启动 WebDriverWebClient 实例通过传递 FirefoxOptions 对象如下:

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.firefox.FirefoxOptions;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    System.setProperty("webdriver.gecko.driver","/Users/vshukla/Music/geckodriver");
    DesiredCapabilities cap = DesiredCapabilities.firefox();
    cap.setCapability(FirefoxDriver.PROFILE, profile);
    cap.setCapability(CapabilityType.PROXY, proxy);
    FirefoxOptions opt = new FirefoxOptions();
    opt.merge(cap);
    WebDriver driver = new FirefoxDriver(opt);
    

    PS:作为参考,您可以查看mutablecapabilities标签中的讨论

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-14
      • 2021-11-27
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      相关资源
      最近更新 更多