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

How to run Selenium WebDriver test cases in Chrome with Maven?

我需要使用 ChromeDriver with 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. The latest version can be downloaded from 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.access000 美元(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 个堆栈帧

我已经阅读了可通过下面的 link 访问的讨论: How to run Selenium WebDriver test cases in Chrome?

但是我无法在我的服务器上下载可执行文件。所以,这不是我的选择。 但是 Maven 在服务器上下载 "selenium-chrome-driver-2.53.1.jar"(这对我来说没问题)。

有没有办法使用下载的 .jar 文件而不是可执行文件?

P.S。对于这个项目,我使用 IntelliJ Idea Community Edition,但我不是它的专家

你在抛出的异常中有答案。只需在初始化驱动程序之前设置可执行 chrome 驱动程序的路径。

System.setProperty("webdriver.chrome.driver", "path to your chrome driver executable")

您可以从下面 link 下载 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();

首先下载 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 项目。

Link : https://maven.apache.org/surefire/maven-surefire-plugin/