如何在Selenium Java 3.11中向GeckoDriver添加所需的功能
我正在尝试在SeleniumJava3.11中为firefox使用如何在Selenium Java 3.11中向GeckoDriver添加所需的功能,java,selenium,selenium-webdriver,geckodriver,mutablecapabilities,Java,Selenium,Selenium Webdriver,Geckodriver,Mutablecapabilities,我正在尝试在SeleniumJava3.11中为firefox使用GeckoDriver。firefox版本是59。一切正常,我能够调用firefox驱动程序。唯一的挑战是我需要向我的firefox实例添加DesiredCapabilities 旧方法WebDriver=newfirefoxdriver(功能)似乎已被弃用,我无法找到指定功能的新方法 代码如下: public static WebDriver createDriver(String userAgentKey, String PR
GeckoDriver
。firefox版本是59
。一切正常,我能够调用firefox驱动程序。唯一的挑战是我需要向我的firefox实例添加DesiredCapabilities
旧方法WebDriver=newfirefoxdriver(功能)最新的selenium版本中的code>似乎已被弃用,我无法找到指定功能的新方法
代码如下:
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将扩展添加到实例?实现这一点的其他选项有哪些?使用firefox选项:
FirefoxOptions options = new FirefoxOptions();
options.setCapability(FirefoxDriver.PROFILE, profile);
options.setCapability(CapabilityType.PROXY, proxy);
你就快到了。您需要使用类中的方法将DesiredCapabilities类型的对象合并到FirefoxOptions类型的对象中,并通过传递FirefoxOptions对象来启动WebDriver和WebClient实例,如下所示:
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:作为参考,您可以查看标签中的讨论虽然这提供了设置功能的正确方法,但我仍然没有看到扩展添加到我的实例中。您是在谈论profile.addExtension(modifyHeaders)?您也可以为此目的使用此方法:options.setProfile(profile);