我需要使用 ChromeDriver 和 Maven 创建简单的自动测试。
摘自pom.xml:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.1</version>
</dependency>
测试用例:
@BeforeTest
public void StartBrowser_NavURL() {
driver = new ChromeDriver();
driver.manage().window().maximize();
}
@AfterTest
public void CloseBrowser() {
driver.quit();
}
@Test
public void testToCompareDoubles() {
driver.get("http://www.google.com");
}
运行测试后执行命令
mvn -test
我收到以下异常:
java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;欲了解更多信息,请参阅https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver 。最新版本可以从http://chromedriver.storage.googleapis.com/index.html下载 在 com.google.common.base.Preconditions.checkState(Preconditions.java:199) 在 org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109) 在 org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32) 在 org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137) 在 org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296) 在 org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:116) 在 com.testTask.GoogleTest.StartBrowser_NavURL(GoogleTest.java:26) 在 org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77) 在 org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:110) 在 org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:106) 在 org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) 在 org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) 在 org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) 在 org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) 在 org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) ...删除了 23 个堆栈帧
我已阅读可通过以下链接访问的讨论: How to run Selenium WebDriver test cases in Chrome?
但我无法在我的服务器上下载可执行文件。所以,这对我来说不是一个选择。 但是 Maven 在服务器上下载“selenium-chrome-driver-2.53.1.jar”(这对我来说没问题)。
有没有办法使用下载的 .jar 文件而不是可执行文件?
附注对于这个项目,我使用 IntelliJ Idea Community Edition,但我不是这方面的专家
最佳答案
你在抛出的异常中得到了答案。只需在初始化驱动程序之前设置可执行 Chrome 驱动程序的路径即可。
System.setProperty("webdriver.chrome.driver", "path to your chrome driver executable")
您可以从以下链接下载 Chrome 驱动程序可执行文件并将其放置到所需位置:
https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver
编辑:
如果您不想手动下载 Chrome 驱动程序,请像这样添加依赖项。
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>1.4.9</version>
</dependency>
这将下载最新版本的驱动程序并使用以下命令设置正确的 java 系统变量:
ChromeDriverManager.getInstance().setup();
关于java - 如何使用 Maven 在 Chrome 中运行 Selenium WebDriver 测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809283/