我需要使用Maven的ChromeDriver创建简单的自动测试。
摘自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) at 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”(对我来说没问题)。
有没有办法使用dowloaded .jar文件而不是可执行文件?
P.S。对于这个项目,我使用IntelliJ Idea社区版,我不是它的专家
答案 0 :(得分:2)
您在抛出的异常中有一个答案。只需在初始化驱动程序之前设置可执行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();
答案 1 :(得分:0)
首先下载chromedriver.exe文件,并确保它与Selenium Webdriver版本兼容。
然后,您必须使用System.Setproperty设置路径,如下面的代码所示
@BeforeTest
public void StartBrowser_NavURL() {
//setup the chromedriver path
System.setProperty("webdriver.chrome.driver", "Path to your chrome driver");
driver = new ChromeDriver();
driver.manage().window().maximize();
}
此后,您需要配置maven Surefire插件才能通过命令行运行maven项目。