我的 selenium 脚本在 eclipse 中运行良好,但在 jenkins 中却不行
我已经使用 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);
}**
据我所知,chrome 上的测试必须采用
headless
模式才能在 Jenkins 上运行。您需要像这样设置 chrome 选项:
import org.openqa.selenium.chrome.ChromeDriver;
...
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
driver = new ChromeDriver(chromeOptions);
要解决此问题:
向 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);