java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava / lang / String;),包含Selenium,gradle和ChromeDriver
我正在尝试使用Selenium api和Gradle。 这是我的build.gradle依赖部分:
dependencies { compile 'com.google.api-client:google-api-client:1.23.0' compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0' compile 'com.google.apis:google-api-services-sheets:v4-rev506-1.23.0' compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.9.0' compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '2.9.0' }
我的selenium – Java代码:
System.setProperty("webdriver.chrome.driver", "C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe"); WebDriver driver = new ChromeDriver();
代码工作正常,我可以打开Chrome浏览器。 但是,在build.gradle中,我使用的是2.9.0版本的selenium和chromedriver。 如果我尝试在2.9.0之后使用任何版本,它会在WebDriver driver = new ChromeDriver()中给出以下错误: 方法:
Exception in thread "main" 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:339) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123) at Quickstart.main(Quickstart.java:130)
我试着寻找gradle + Maven + selenium支持的版本。 无法找到任何好消息。 任何想法?
错误说明了一切:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
该错误意味着Java客户端无法找到ChromeDriver()
。
问题与解决方案
根据您共享的Selenium – Java代码 , System.setProperty()
行用于设置ChromeDriver二进制路径而不是chrome二进制路径 。 为此,您必须从ChromeDriver下载ChromeDriver二进制文件– WebDriver for Chrome并将其放入系统中,并通过System.setProperty()
行提及ChromeDriver的绝对路径。 因此你必须改变:
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"); WebDriver driver = new ChromeDriver();
至 :
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe"); WebDriver driver = new ChromeDriver();
- Android Studio不会从外部库自动完成XML中的值
- 有没有办法安装jar本地gradle存储库,因为它在mave中(maven install:install-file
- 是否可以将AngularJs包含到使用Gradle的项目中
- 使用`Runtime.getRuntime()。exec`从Java启动的进程无法访问文件系统位置
- 使用详细类加载运行Gradle?
- 使用Spring Boot和annotations配置ViewResolver为HTTP请求找不到URI错误的映射
- Gradle中的注释处理器将源文件输出到构建/类,使javadoc失败。 怎么解决?
- 如何使用gradle编译单个java文件?
- 如何以os独立方式设置Gradle`options.bootClasspath`?