我使用Boni Garcia的webdrivermanager插件来安装驱动程序。当我使用它在本地执行时,一切工作正常,但当我尝试通过Jenkins执行同样的操作时,我会遇到问题。详细信息如下:
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.3.0</version>
</dependency>现在,当我试图通过Jenkins执行相同的maven项目时,我遇到了问题。我的从属机器是docker机器。
一开始,我试着用webdrivermanager来安装chrome驱动程序,但我得到的错误是没有找到二进制文件。
ChromeOptions options = new ChromeOptions();
options.addArguments("headless");
options.addArguments("start-maximized");
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver(options);错误:
org.openqa.selenium.WebDriverException:
unknown error: cannot find Chrome binary
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 3.10.0-862.14.4.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)然后,我尝试在框架中使用驱动程序。我将chromedriver文件保存在框架中的驱动程序文件夹中,然后尝试执行它,但仍然得到一个错误(不过这次的错误不同)。
ChromeOptions options = new ChromeOptions();
options.addArguments("headless");
options.addArguments("start-maximized");
System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/chromedriver");
driver = new ChromeDriver(options);错误:
Running TestSuite
/home/jenkins/workspace/Dental_EIEI_Angular/EIEI Test Jenkins/src/test/resources/drivers/chromedriver: /home/jenkins/workspace/Dental_EIEI_Angular/EIEI Test Jenkins/src/test/resources/drivers/chromedriver: cannot execute binary file
Apr 03, 2019 2:19:23 PM org.openqa.selenium.os.OsProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Process exited with an error: 126 (Exit value: 126)发布于 2019-04-04 03:36:58
我遇到了一个类似于你所面临的问题。WebDriverException : unknown error: cannot find Chrome binary是因为您的框架无法在jenkins中找到chrome二进制文件。使用你的代码设置二进制文件是不可行的,因为你应该知道二进制文件的路径。为了避免麻烦,只需创建一个docker-compose.yml文件来启动并运行您的基础设施来执行您的测试。
version: "3"
services:
selenium-hub:
image: selenium/hub
container_name: selenium-hub
ports:
- "4444:4444"
environment:
- GRID_BROWSER_TIMEOUT=30
chrome:
image: selenium/node-chrome
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
firefox:
image: selenium/node-firefox
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444然后,您可以使用docker-compose up -d在分离模式下运行您的基础架构。您还需要在代码中进行一些相关的更改,以访问selenium-hub服务器。
System.setProperty("webdriver.chrome.driver", "src//test//resources//driver//chromedriver");
ChromeOptions cap = new ChromeOptions();
cap.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
webDriver = new RemoteWebDriver(new URL("http://"+serverIP+":4444/wd/hub"), cap);
webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);其中serverIP为localhost如果要在本地系统中运行应用程序,或者要在jenkins中运行,则需要selenium-hub服务器的IP地址,可以通过在jenkins上运行docker inspect找到该服务器
https://stackoverflow.com/questions/55501442
复制相似问题