如何使用Maven在Chrome中运行Selenium WebDriver测试用例?

时间:2016-10-01 17:02:53

标签: java maven selenium intellij-idea selenium-chromedriver

我需要使用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社区版,我不是它的专家

2 个答案:

答案 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项目。

链接:https://maven.apache.org/surefire/maven-surefire-plugin/