我正在使用 3.6.0 版的硒铬驱动程序 并使用谷歌番石榴 23.0。 当我这样做时:
ChromeOptions chromeOptions = new ChromeOptions();
它给出以下错误:
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:329)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
我还检查了这个:https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver/3.6.0 谁能帮我在这里使用什么版本的番石榴?
法典:
System.setProperty("webdriver.chrome.driver", driverPath);
log.warn("chrome driver path is : {}", driverPath);
List<String> options = proxyConfig.getChromeOptions();
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments(options);
Map<String, String> capabilites = proxyConfig.getCapabilities();
for(Map.Entry<String, String> entry : capabilites.entrySet()) {
chromeOptions.setCapability(entry.getKey(), entry.getValue());
}
return new ChromeDriver(chromeOptions);
从您关于特定用例的问题中不清楚为什么您试图分别发出Selenium Client v 3.6.0和google-guava 23.0的信号。
为了简单起见,
- 硒客户端 v 3.6.0使用番石榴 v23.0
- Selenium Client v 3.5.1的发行说明明确提到了以下内容:
- 将番石榴提升到版本 23。
所以,我没有看到任何问题。
但是,作为最终用户,用户应该考虑从旧版本中完全删除所有与硒相关的 jar,而不是从多个selenium-java-X.Y.Z版本中选择单个 jar.zip并替换为新版本中的新jar。
这个特殊问题
此错误消息...
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
。表示Java 客户端无法找到ChromeDriver()
如果没有代码试用,很难分析真正的问题。但是,根据java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava/lang/String;(使用Selenium,gradle和ChromeDriver,您需要使用System.setProperty()
行来设置ChromeDriver二进制路径(而不是chrome二进制路径(。为此,您必须从ChromeDriver -WebDriver for Chrome下载ChromeDriver二进制文件,并将其放置在您的系统中,并通过System.setProperty()
行提及ChromeDriver的绝对路径。因此,您必须使用以下行:
System.setProperty("webdriver.chrome.driver", "C:\path\to\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
// configurations through chromeOptions
WebDriver driver = new ChromeDriver(chromeOptions );