Chrome在我的Jenkins上不稳定。当我运行5次构建时,它运行1-2次成功,而其他3次则出现上述错误。
Chrome代码:
ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver","/usr/local/bin/chromedriver");
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
driver = new ChromeDriver(options);
driver.get("https://mywebsite.com");
我已经采取了一些步骤:
答案 0 :(得分:2)
此错误消息...
...表示 ChromeDriver 无法启动/产生新的浏览上下文,即 Chrome浏览器会话。
尽管您提到了有关使用 ChromeDriver 81.0.4044.69 和 Google Chrome 81.0.4044.129 的信息,但查看了所提供的错误堆栈跟踪的快照,但似乎仍然存在您正在使用的不同二进制文件的版本之间不匹配,可能是系统中的默认位置未安装 Chrome 浏览器,或者是由于JDK不匹配。此外, ChromeDriver 81.0.4044.69(2020-03-17)有点不稳定,已由ChromeDriver 81.0.4044.138 (2020-05-05)
取代但是,服务器(例如 ChromeDriver )希望您根据以下图片在每个系统的默认位置中安装 Chrome :< / p>
1 对于Linux系统,ChromeDriver期望/usr/bin/google-chrome
是实际Chrome二进制文件的符号链接。
您可以在What is default location of ChromeDriver and for installing Chrome on Windows
中找到详细的讨论
如果在非标准位置使用 Chrome 可执行文件,则必须覆盖Chrome二进制位置,如下所示:
基于代码的解决方案:
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
ChromeOptions options = new ChromeOptions();
options.setBinary('/usr/bin/google-chrome'); //chrome binary location
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com/");
//execute the remaining steps
driver.quit();
其他注意事项-确保满足以下条件:
@Test
。driver.quit()
方法内调用tearDown(){}
,以优雅地关闭和销毁 WebDriver 和 Web Client 实例。您可以在以下位置找到一些相关的讨论