开发者问题收集

我的 selenium 脚本在 eclipse 中运行良好,但在 jenkins 中却不行

2021-05-25
906

我已经使用 TestNG 注释和 maven 创建了脚本。它在 Eclipse 中按预期运行,我也尝试运行 testng.xml 文件,看起来不错。然后我配置了 Jenkins,但现在它没有运行。Jenkins 给出以下错误:(仅供参考:我之前已成功构建 Jenkins,这怎么可能在一天内就坏了???)

在端口 48847 上启动 ChromeDriver 72.0.3626.69 (3c16f8a135abc0d4da2dff33804db79b849a7c38) 仅允许本地连接。 请保护 ChromeDriver 和相关测试框架使用的端口,以防止恶意代码访问。 测试运行:7,失败:1,错误:0,跳过:6,耗时:4.774 秒<<< 失败! - 在 TestSuite 中 launchBrowser(com.pages.VisibilityAnnotationDemo) 已用时间:4.208 秒 <<< 失败! org.openqa.selenium.WebDriverException: 未知错误:Chrome 启动失败:崩溃 (未知错误:DevToolsActivePort 文件不存在) (从 chrome 位置 C:\Program Files (x86)\Google\Chrome\Application\chrome.exe 启动的进程不再运行,因此 ChromeDriver 认为 Chrome 已崩溃。) (驱动程序信息:chromedriver=72.0.3626.69 (3c16f8a135abc0d4da2dff33804db79b849a7c38),platform=Windows NT 10.0.19042 x86_64)(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:872 毫秒

I added below Jenkins config Root POM = C:\Users....\workspace\VRsessions\pom.xml Goals and options = clean install

我尝试运行的代码,其脚本用于执行 UI验证。

**public String baseUrl = " URL OF PAGE";
String driverPath = "C:\\Selenium\\chromedriver_win32\\chromedriver.exe";
public WebDriver driver;
JavascriptExecutor js = (JavascriptExecutor) driver;

@BeforeTest
public void launchBrowser() throws InterruptedException {
System.setProperty("webdriver.chrome.driver", driverPath);
driver = new ChromeDriver();
driver.get(baseUrl);
                                                                                        
}**     
2个回答

据我所知,chrome 上的测试必须采用 headless 模式才能在 Jenkins 上运行。您需要像这样设置 chrome 选项:

import org.openqa.selenium.chrome.ChromeDriver;

...

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
driver = new ChromeDriver(chromeOptions);
C. Peck
2021-05-25

要解决此问题: 向 Chrome 添加 --disable-dev-shm-usage, --headless, --no-sandbox 命令行选项。您还需要将 ChromeOptions 对象传递给 new ChromeDriver(options);

代码:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("disable-infobars");
System.setProperty("webdriver.chrome.driver", driverPath);
driver = new ChromeDriver(options);
driver.get(baseUrl);
Abhishek Dhoundiyal
2021-07-09