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

标签 java maven selenium intellij-idea selenium-chromedriver

我需要使用 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/

相关文章:

java - 在android中使用自定义适配器的Listview

java - 需要解释 : Generic friendliness to avoid casting, 这在 Java 8 中不再需要

java - JMH 找不到资源 :/META-INF/BenchmarkList

java - 如何解决此错误 : Caused by: java. lang.InknownClassChangeError: null

bash - 自动启动 Selenium RC 服务器

selenium - 如何在Robot Framework关键字中指定一个带空格的 "Arguments"?

java - 如何防止在 soap webservice 客户端中生成 xml 'nil' 元素?

java - 运行 mvn jetty 时出错 :run on OSX

java - webdriver 不断抛出 IOException 并重新连接

java - @GenerateValue 可以与非主键属性一起使用吗?