2016-10-01 234 views
0

我需要在Maven中使用ChromeDriver创建简单的自动测试。从pom.xml中如何使用Maven在Chrome中运行Selenium WebDriver测试用例?

摘录:

<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 

我收到以下异常:

JA va.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) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) at org.openqa.selenium.chrome.ChromeDriver。( ChromeDriver.java:116) at com.testTask.GoogleTest.StartBrowser_NavURL (GoogleTest.java:26) at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77) at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:110 ) at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:106) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache .maven.surefire.booter.ProviderFactory $ ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire .booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.ja VA: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 Community Edition,我不是专家。

回答

1

您在引发的异常中有答案。在初始化驱动程序之前,只需设置可执行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(); 
+0

一次:我没有权限下载的可执行文件。 – Eugene

+0

这是什么意思?你需要有可执行的chrome驱动程序来在chrome上运行测试。 –

+0

您的建议有效:我的测试在下载“chromedriver.exe”后执行。但是所有这些东西都应该使用单一的Maven命令(例如:mvn -test)运行。我不知道,Maven可以从互联网上下载文件吗?所以,我正在寻找一个解决方案,这将最大限度地减少下载的外部文件的数量。否则,我应该去利益相关者重新谈判。 – Eugene

相关问题