【发布时间】:2020-05-22 02:26:16
【问题描述】:
当我尝试启动 Selenium WebDriver 时,我得到:NoSuchMethodError: org.openqa.selenium.firefox.FirefoxOptions.merge:
我在main 中的代码调用了一个方法:
WebDriver driver = new WebDriverProfile().getTMPFirefoxProfile(null); // Parameter is optional
我正在详细发布我的代码,希望也许有人能够提供建议以指导我朝着正确的方向前进。
堆栈跟踪:
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:286)
at n.NMain.main(NMain.java:22)
调用getTMPFirefoxProfile(ProxyPOJO proxyPOJO)调用代码:
public WebDriver getTMPFirefoxProfile(ProxyPOJO proxyPOJO) throws InterruptedException, MalformedObjectNameException, InstanceNotFoundException, ReflectionException {
System.setProperty("webdriver.gecko.driver", GlobalVar.geckdriverExecutableFilePath); // Verified path is correct via syso
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);
}
DesiredCapabilities dc = DesiredCapabilities.firefox();
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);
return driver;
}
调用:getNewFireFoxWebDriver(FirefoxOptions firefoxOptions) 调用此代码:
if (firefoxOptions != null) {
driver = new FirefoxDriver(firefoxOptions);
} else {
driver = new FirefoxDriver();
}
return driver;
我已经问过a similar question,但我现在已经尝试了近 10 种不同的建议 - 没有一个能解决我的问题。
下面我将概述我为尝试解决问题所采取的步骤:
1) 右键单击项目 -> Maven clean -> Maven build -> Maven test(我分别尝试了每个,然后一个接一个)
2) 点击项目 -> 清理
3) 确认 Firefox 已更新至最新版本(版本 72)
4) 从项目 POM 中删除库 guava(唯一建议的冲突)
5) 关闭并重新启动 Eclipse
6) 删除所有运行配置,从头开始运行项目
7) 重新下载 GeckoDriver v0.26.0 以确保我安装了最低版本
8) 我确定我的 POM 文件包含 Selenium 依赖版本 3.141.591 其中包含 merge 方法
我别无选择。接下来我该尝试什么?
下面是项目POM文件的内容:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.9.2</version>
</dependency>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.9.2</version>
<classifier>models</classifier>
</dependency>
<dependency>
<groupId>uk.ac.abdn</groupId>
<artifactId>SimpleNLG</artifactId>
<version>4.4.8</version>
</dependency>
</dependencies>
我在该项目的构建路径中链接了另外两个项目。从一个项目中,我可以毫无问题地致电getTMPFirefoxProfile(ProxyPOJO proxyPOJO)。从另一个,我得到与当前项目相同的错误。这是什么意思?我分析了另一个项目,没有看到任何冲突的依赖项。
我花了一整天的时间来解决这个问题,但我完全迷失了。
有什么想法吗?
谢谢!
【问题讨论】:
标签: java eclipse maven selenium selenium-webdriver