2015-09-09 48 views
0

我最近开始使用Selenium和Java编码。我有一个基本的测试设置,似乎与Firefox的工作。我也想在Chrome上进行测试。但是当我将Webdriver定义为ChromeDriver时,出现错误,说我需要在系统路径中定义它。Java - 引用maven依赖 - Selenium Chromedriver

我用Maven下载了所有的依赖项,但现在我不知道如何正确引用它们。

我的问题:

protected void setUpBeforeTestClass(){ 
    // define path to ChromeDriver 
    // cause I get the error "The path to the driver executable must be set by the webdriver.chrome.driver system property" 
    System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver"); 

    // driver = new FirefoxDriver(); 
    driver = new ChromeDriver(); 
    String url = urls[0]; // pull in from array of urls 

    driver.get(url); 
} 

的Maven下载依赖关系:

C:\Users\{username}\.m2\repository\org\seleniumhq\selenium\ ... 

而且ChromeDriver是文件夹中。

如何在不硬编码路径的情况下引用此文件夹以吸引ChromeDriver? (我不想修改我的系统环境变量)

我的目标是我可以在任何机器上下载我的Java类和Maven依赖项并运行测试。

enter image description here

回答

5

您需要下载Chrome的驱动程序二进制文件,并把它放在你的计算机上。某处像“C:/Selenium/chromedriver.exe”。你可以找到它here。然后,您可以通过使用类似访问:

System.setProperty("webdriver.chrome.driver", "C:/Selenium/chromedriver.exe")); 
+0

好的呼吁指出我需要二进制第一。 – SoluableNonagon

0

从这里下载二进制: -

http://chromedriver.storage.googleapis.com/index.html?path=2.19/ 

使用下面的代码: -

WebDriver driver=null; 
System.setProperty("webdriver.chrome.driver","./src//lib//chromedriver"); 
DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
ChromeOptions options = new ChromeOptions(); 
options.addArguments("test-type"); 
capabilities.setCapability("chrome.binary","./src//lib//chromedriver"); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
driver = new ChromeDriver(capabilities); 

希望它能帮助:)

回复我,如果仍然面临问题:)

+1

它需要ChromeDriver二进制文件。它可以访问很好的jar。 –

+0

你是对的。我也添加了二进制位置。还有什么我失踪?特写标志 –

2

根据答案,我发现它是我失踪的二进制文件。该死的。

我发现这一点:

https://github.com/bonigarcia/webdrivermanager 

这帮助了很多在管理我想用webdrivers的条款。我不必自己下载webdrivers,这对我来说是这样。