我有一个使用硒和ChromeDriver的Java应用程序来测试某些应用程序,例如应用程序A,B和C。
我的本地环境在可视和无头模式(Chrome版本66.0.3359.139 64位)下都可以正常工作,并且需要5秒钟来测试每个应用程序。
在jenkins Docker节点(Chrome版本71)中无头运行时,应用程序A和C日志:
在端口15981上启动ChromeDriver 2.46.628388
仅允许本地连接。请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。
[SEVERE]:CreatePlatformSocket()失败:地址 协议不支持该系列(97)
org.openqa.selenium.remote.ProtocolHandshake createSession INFO: 检测到的方言:OSS
但是可以运行所有测试。
另一方面,应用B记录:
在端口15981上启动ChromeDriver 2.46.628388
仅允许本地连接。请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。
[SEVERE]:CreatePlatformSocket()失败:地址 协议不支持该系列(97)
[SEVERE]:CreatePlatformSocket()失败:地址 协议不支持该系列(97)
org.openqa.selenium.remote.ProtocolHandshake createSession INFO: 检测到的方言:OSS
然后“挂起”大约15分钟,然后继续。
这是我配置驱动程序的方式:
private static WebDriver createChromeDriver() {
System.setProperty("webdriver.chrome.driver", DRIVER_PATH);
ChromeOptions options = new ChromeOptions();
if (ENABLE_HEADLESS) {
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-web-security");
options.addArguments("--no-first-run");
options.addArguments("--no-check-default-driver");
options.addArguments("--allow-running-insecure-content");
options.addArguments("--disable-infobars");
options.addArguments("--start-maximized");
options.addArguments("--ignore-certificate-errors");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-notifications");
options.setExperimentalOption("prefs", singletonMap("profile.default_content_settings.geolocation", 2));
}
options.setExperimentalOption("useAutomationExtension", false);
ChromeDriver chromeDriver = new ChromeDriver(options);
chromeDriver.manage().window().maximize();
return chromeDriver;
}
我只是尝试使用“ --headless”,但是我遇到了同样的问题。