背景
我对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驱动程序,而无需在每次测试中安装驱动程序?
答案 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吗?