将Chrome Selenium驱动程序添加到Ubuntu

时间:2015-08-20 10:52:47

标签: java maven google-chrome selenium jenkins

背景

我对bitbucket进行了一系列selemium测试,作为maven项目运行。 Jenkins在我的服务器上无头地运行我的maven项目。 Selenium需要在服务器上安装额外的驱动程序才能运行chrome测试。

问题

我已经在服务器上的jenkins文件夹的根目录下安装了chrome驱动程序,因为jenkins用户是运行测试的用户,只能访问这些文件夹。当我运行测试时,我收到以下错误

java.lang.IllegalStateException: 
The driver executable does not exist: 
/var/lib/jenkins/jobs/ChromeLogin01/workspace/~/chromedriver

~/chromedriver路径的一部分位于我的selenium脚本中。我没想到之前包含所有内容的路径,并认为~会将我带到Jenkins用户的根目录。

我尝试过的事情

所以我认为~/chromedriver会正确重定向,但它没有。我也做了&& ~/chromedriver因为那应该将PATH重置为root。经过一些变化之后,似乎无法用常规的cd语句来完成。

问题

如何让我的测试找到我在服务器上安装的chrome驱动程序,而无需在每次测试中安装驱动程序?

2 个答案:

答案 0 :(得分:1)

您可以使用~替换脚本中的System.getProperty("user.home"), 这会带你到Jenkins用户的根目录。 像这样System.getProperty("user.home") + "/chromedriver"

答案 1 :(得分:0)

如果您使用的是Selenium独立版,则可以执行以下操作:

java -jar selenium-server-standalone-2.44.0.jar -role hub -hubConfig hubConfig.json -Dwebdriver.chrome.driver=chromedriver.exe

在上面的示例中,.jar文件和chromedriver.exe位于同一文件夹中。

您还可以尝试从测试内部设置chromedriver的位置,如下所示:

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();

如果从执行的测试文件到chromedriver的距离(文件夹距离)是这样的:

chromedriver path = "/workspace/selenium/drivers/chromedriver" 
tests path = "/workspace/tests/test X" (where X is 1, 2... n)

然后通往chromedriver的路径是:

pathToChromeDriver = "{PathToTestX}/../../selenium/drivers/chromedriver"

希望这有帮助。

另外,您使用的是特定于操作系统的chromedriver吗?