[当我尝试使用Selenium/Firefox
和DesiredCapabilities
启动新的FirfoxOptions
实例时,我得到以下代码:
Exception in thread "main" java.lang.NoSuchMethodError: org.openqa.selenium.firefox.FirefoxOptions.merge(Lorg/openqa/selenium/Capabilities;)Lorg/openqa/selenium/firefox/FirefoxOptions;
我正在使用以下代码:
public WebDriver getDriver() throws MalformedObjectNameException, InstanceNotFoundException, ReflectionException, InterruptedException
{
System.setProperty("webdriver.gecko.driver", GlobalVar.geckdriverExecutableFilePath);
//DesiredCapabilities capabilities = new DesiredCapabilities();
DesiredCapabilities dc = DesiredCapabilities.firefox();
if (proxyPOJO != null) {
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
proxy.setFtpProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
proxy.setSslProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
dc.setCapability(CapabilityType.PROXY, proxy);
}
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dc);
opt.addPreference("dom.popup_maximum", 200);
opt.addPreference("dom.webnotifications.enabled", false);
opt.merge(capabilities);
WebDriver driver = WebDriverX.getNewFireFoxWebDriver(opt); // Basically calls: driver = new FirefoxDriver(firefoxOptions);
return driver;
}
我的POM
文件包含以下条目:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.11.0</version>
</dependency>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>26.0-jre</version>
</dependency>
[以前,我在POM中具有org.seleniumhq.selenium
的3.5.2版本,但不支持merge
功能。但是,当我尝试使用以下代码启动版本为3.5.2
的Selenium时:
System.setProperty("webdriver.gecko.driver", GlobalVar.geckdriverExecutableFilePath);
DesiredCapabilities capabilities = new DesiredCapabilities();
if (proxyPOJO != null) {
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
proxy.setFtpProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
proxy.setSslProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
capabilities.setCapability(CapabilityType.PROXY, proxy);
}
FirefoxOptions firefoxOptions = new FirefoxOptions(capabilities);
WebDriver driver = WebDriverX.getNewFireFoxWebDriver(firefoxOptions);
我有以下例外:
NoSuchMethodError: org.openqa.selenium.firefox.FirefoxOptions.<init>(Lorg/openqa/selenium/Capabilities;)V
我安装了geckodriver.exe
的最新版本。
版本3.11.0或版本3.5.2都不起作用(我也尝试过3.8.2)。>>
我在做什么错?
谢谢!
UPDATE:
对于版本3.11.0,我得到以下堆栈跟踪:
Exception in thread "main" java.lang.NoSuchMethodError: org.openqa.selenium.firefox.FirefoxOptions.merge(Lorg/openqa/selenium/Capabilities;)Lorg/openqa/selenium/firefox/FirefoxOptions; at webdriverX.WebDriverProfile.getTMPFirefoxProfile(WebDriverProfile.java:259) at s.SPage.scrapeS(SPage.java:36) at n.NMain.main(NMain.java:27)
对于版本3.5.2,以下是堆栈跟踪:
Exception in thread "main" java.lang.NoSuchMethodError: org.openqa.selenium.firefox.FirefoxOptions.<init>(Lorg/openqa/selenium/Capabilities;)V at webdriverX.WebDriverProfile.getTMPFirefoxProfile(WebDriverProfile.java:232) at s.SPage.scrapeS(SPage.java:36) at n.NMain.main(NMain.java:27)
getTMPFirefoxProfile()
方法基本上执行以下操作:
if (firefoxOptions != null) { driver = new FirefoxDriver(firefoxOptions); } else { driver = new FirefoxDriver(); }
谢谢!
[当我尝试使用DesiredCapabilities和FirfoxOptions启动新的Selenium / Firefox实例时,我得到以下代码:线程“ main” java.lang.NoSuchMethodError中的异常:org.openqa.selenium ....
此错误消息...