使用 Jenkins 进行无头 Selenium 测试的空白页 运行

Blank page on headless Selenium tests run with Jenkins

Headless Selenium 测试在我的机器上可以很好地 运行(是的,我绝对应该搬到这个不存在问题的理想地方)。

但是,当我通过 Jenkins 启动这些测试时,找到了 none 的页面元素。我截了一张图看看是什么原因,显示的是空白页。

这就是我实例化无头 Chrome 浏览器的方式。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setPageLoadStrategy(PageLoadStrategy.NONE);
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--window-size=1920x1080");
chromeOptions.addArguments("start-maximised");
chromeOptions.addArguments("enable-automation");
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-infobars");
chromeOptions.addArguments("--disable-dev-shm-usage");
chromeOptions.addArguments("--disable-browser-side-navigation");
chromeOptions.addArguments("--disable-gpu");
driver = new ChromeDriver(chromeOptions);
driver.manage().timeouts().pageLoadTimeout(30L, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(3L, TimeUnit.SECONDS);
driver.manage().window().maximize();

我有一个猜测,但我的同事说这不可能:我应该在 Jenkins 服务器上安装 Xvfb 吗?我的意思是,这是强制性的吗? (在尝试这种方法之前我必须至少有 51% 的把握^^)

提前致谢。

就像 Shashank Kadne 提到的,您需要在 Chrome 中设置一个选项来忽略证书。

chromeOptions.addArguments("--ignore-certificate-errors");

我尝试了很多解决方案,但结果是不允许 Jenkins 访问我需要测试的资源。所以……反正我自己也解决不了。系统管理员做到了。