Java 如何使用Maven在Chrome中运行Selenium WebDriver测试用例?
我需要使用ChromeDriver和Maven创建简单的自动测试 摘自pom.xml: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> 运行测试后执行命令
<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能不能从互联网上下载文件。因此,我正在寻找一种解决方案,它可以最大限度地减少下载的外部文件的数量。否则,我应该去利益相关者那里重新谈判。太好了!这就是我要找的。非常感谢!谢谢,这帮了大忙