Когда я пытаюсь запустить новый экземпляр 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>
Ранее у меня была версия 3.5.2 org.seleniumhq.selenium
в POM, которая не поддерживает merge
функциональность. Однако, когда я попытался запустить Selenium с версией 3.5.2
, используя следующий код:
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).
Что я делаю не так?
Спасибо!
ОБНОВЛЕНИЕ:
С версией 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();
}
Спасибо !!