我使用版本为3.6.0的selenium chrome驱动程序 并使用谷歌番石榴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);
答案 0 :(得分:0)
从您的问题中不清楚您的具体用法,为什么您要分别发出 Selenium Client v 3.6.0 和 google-guava 23.0 的信号。
为了简单起见,
- Bump guava到23版。
所以,我没有看到任何问题。
但是,作为最终用户而不是从多个 selenium-java-XYZzip 版本中选择单个jar,用户应该考虑完全删除所有 Selenium 相关的 jar 来自旧版本,并替换为新版本中的新 jars 。
此错误消息......
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;) with Selenium, gradle and 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 );