我在Selenium/Java中有一个项目,其测试通常在chromedriver上运行.exe(我在Windows上工作( - 完全没有问题。
我最近决定将该项目添加到在 Linux 上运行的 TeamCity,由于它无法在浏览器上运行测试,我想切换到 PhantomJS 驱动程序。
我已经尝试了我在网上找到的所有解决方案的多种变体,但仍然无法使其正常工作。 目前,我的资源中有phantomjs二进制文件,并且在枚举类中获得了这样的驱动程序:
PHANTOMJS {
@Override
public WebDriver initNewDriver() {
System.setProperty("phantomjs.binary.path", ClassLoader.getSystemResource(RELATIVE_PATH_TO_FILE_IN_RESOURCES).getFile());
return new PhantomJSDriver();
}
然后在测试类中,我从driver.get(SOME_URL(开始 - 这是有史以来最远的。
无论我做什么,当我尝试通过"干净测试"在TeamCity上运行它时,我都会得到这样的结果:
[userLoginTest] java.lang.IllegalStateException: 驱动程序可执行文件不存在:/opt/buildAgent1/work/c4641c7cfd3331f7/web/drivers/phantomjslinux/phantomjs [14:41:41] [userLoginTest] java.lang.IllegalStateException: 驱动程序可执行文件不存在:/opt/buildAgent1/work/c4641c7cfd3331f7/web/drivers/phantomjslinux/phantomjs at com.google.common.base.Preconditions.checkState(Preconditions.java:518( at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:123( at org.openqa.selenium.phantomjs.PhantomJSDriverService.findPhantomJS(PhantomJSDriverService.java:254( at org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService(PhantomJSDriverService.java:190( at org.openqa.selenium.phantomjs.PhantomJSDriver.(幻影JSDriver.java:104( at org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:94( at test.core.base.SeleniumDriver$3.initNewDriver(SeleniumDriver.java:47( at test.core.base.TestBase.(测试库.java:25(
我不太了解 TeamCity,很难找到适用于我的项目并且我真正理解的解决方案。因此,欢迎任何帮助。谢谢:)
通过在服务器上运行npm install phantomjs
并从那里使用PhantomJS来解决。