从渲染器接收消息超时:600.000。当我们使用Jenkins Windows服务模式执行Selenium脚本时。

6
我们使用jenkins窗口服务(无头模式)每天执行selenium自动化脚本。在昨天之前一切正常,但是突然间停止工作,无法启动浏览器。出现以下错误信息[1553677874.187][SEVERE]: Timed out receiving message from renderer: 600.000. 其后所有其余的测试用例都失败了。
如果我们使用jenkins而不是windows服务运行构建,则一切正常。我们只在使用Windows服务时遇到此问题。
我的Chrome驱动程序版本:73.0.3683.68 Chrome浏览器版本:73.0.3683.68 Selenium版本:3.14.0
我已尝试降级浏览器版本和驱动程序版本,但仍无法解决问题。
我期望在使用jenkins作为Windows服务执行时,浏览器能够在后台启动,但实际上却出现错误消息。
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("load-extension=C:\\1.13.4_0");
options.addArguments("--start-maximized");
options.addArguments("--ignore-certificate-errors");
options.addArguments("--disable-popup-blocking");
// options.addArguments("window-size=1400,600");
options.addArguments("enable-automation");
options.addArguments("--headless");
options.addArguments("--window-size=1920,1080");
options.addArguments("--no-sandbox");
// options.addArguments("--disable-extensions");
options.addArguments("--dns-prefetch-disable");
options.addArguments("--disable-gpu");
options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
DesiredCapabilities capabilities = 
DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, 
**strong text**options);
return new ChromeDriver(capabilities);

我真的不确定那是你的脚本还是错误信息。请上传两者并澄清一下? - C. Peck
我的错误信息是[1553677874.187][严重]: 超时接收渲染器的消息: 600.000。 - Sai
3个回答

7

看起来您正在使用以下配置:

  • chromedriver=73.0.3683.68
  • chrome=73.0.3683.68
  • Windows操作系统

John Chen(chromedriver所有者)最近已经确认:

当在Windows上由服务(如Jenkins或任务计划程序)启动Chrome 73.0.3686.75时,我们已确认拍摄屏幕截图存在问题。请参见https://crbug.com/942023获取更多详细信息。对此造成的任何不便,我们深感歉意。但是,我们尚未能够在Linux上观察到类似的问题,因此我们感谢您提供任何帮助来使我们能够在Linux上重现这个问题。我们没有访问TeamCity,但我们已经测试了使用Selenium生成的Docker映像(selenium/standalone-chrome:3.141.59-lithium)拍摄屏幕截图,并没有发现任何问题。

chromedriver73


昨天(2019年3月26日),John再次确认:

我知道在Jenkins上运行Chrome 73存在一些问题。我不知道有什么解决方法。请访问https://crbug.com/942023获取更新。

chromedriver73_and


更新

我们找到了主要问题。主要问题并不在于ChromeDriver v73.x,而在于Chrome v73.x,John正式确认如下:

根本原因确实是Chrome 73.x,而不是ChromeDriver。我们正在与Chrome开发人员合作寻找解决方案。

chrome73_issue


解决方案

一个快速的解决方案是:

提示:如果您使用的是Chrome 72版本,请下载ChromeDriver 2.46或ChromeDriver 72.0.3626.69

  • 确保将 JDK 升级至最新版本的JDK 8u202

结尾

您可以在以下位置找到相关讨论:


更新(2019年4月3日)

通过 ChromeOptions() 实例添加参数 --disable-features=VizDisplayCompositor 可以解决此问题:

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-features=VizDisplayCompositor");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");

1
非常感谢您提供解决方案。 - Sai
1
我认为你是正确的(我单独发现了相同的根本问题 - 它在Chrome v73作为后台服务时无法工作)。你提到了降级 - 你是如何做到的? - thab
2
@DebanjanB - 你有Chrome降级的指导吗? - thab
1
@thab 更新了答案,并提供了一个参考链接。 - undetected Selenium
1
嗨,Debanjan。如你所建议的,我已将语句添加到Chrome选项中。它可以正常工作。非常感谢你的更新。 - Sai
显示剩余9条评论

0
在ChromeDriver初始化之前添加以下属性(1):
  1. System.setProperty("webdriver.chrome.silentOutput", "true");

driver = new ChromeDriver();


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接