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

Java 如何使用Maven在Chrome中运行Selenium WebDriver测试用例?,java,maven,selenium,intellij-idea,selenium-chromedriver,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> 运行测试后执行命令

我需要使用ChromeDriver和Maven创建简单的自动测试

摘自pom.xml:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.53.1</version>
</dependency>
运行测试后执行命令

mvn -test
我收到以下例外情况:

java.lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置;有关详细信息,请参阅。最新版本可从以下网站下载: 位于com.google.common.base.premissions.checkState(premissions.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个堆栈框架

我已通过以下链接阅读了可接受的讨论:

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

有没有办法使用dowload.jar文件而不是可执行文件


另外,对于这个项目,我使用IntelliJ Idea社区版,我不是这方面的专家

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

System.setProperty("webdriver.chrome.driver", "path to your chrome driver executable")
您可以从以下链接下载chrome驱动程序可执行文件并将其放置到所需位置:

编辑:

如果您不想手动下载chrome驱动程序,请添加如下依赖项

<dependency>
   <groupId>io.github.bonigarcia</groupId>
   <artifactId>webdrivermanager</artifactId>
   <version>1.4.9</version>
</dependency>

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

System.setProperty("webdriver.chrome.driver", "path to your chrome driver executable")
您可以从以下链接下载chrome驱动程序可执行文件并将其放置到所需位置:

编辑:

如果您不想手动下载chrome驱动程序,请添加如下依赖项

<dependency>
   <groupId>io.github.bonigarcia</groupId>
   <artifactId>webdrivermanager</artifactId>
   <version>1.4.9</version>
</dependency>

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


链接:

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


链接:

再一次:我没有下载可执行文件的权限。这是什么意思?你需要有可执行的chrome驱动程序才能在chrome上运行测试。你的建议很有效:我的测试是在下载“chromedriver.exe”后执行的。但是所有这些东西都应该用一个Maven命令运行(例如:mvn-test)。我不知道,Maven能不能从互联网上下载文件。因此,我正在寻找一种解决方案,它可以最大限度地减少下载的外部文件的数量。否则,我应该去利益相关者那里重新谈判。太好了!这就是我要找的。非常感谢!再次感谢这帮了大忙:我没有下载可执行文件的权限。这是什么意思?你需要有可执行的chrome驱动程序才能在chrome上运行测试。你的建议很有效:我的测试是在下载“chromedriver.exe”后执行的。但是所有这些东西都应该用一个Maven命令运行(例如:mvn-test)。我不知道,Maven能不能从互联网上下载文件。因此,我正在寻找一种解决方案,它可以最大限度地减少下载的外部文件的数量。否则,我应该去利益相关者那里重新谈判。太好了!这就是我要找的。非常感谢!谢谢,这帮了大忙