在Linux上执行测试时,出现以下问题:
org.openqa.selenium.WebDriverException: chrome not reachable
(Session info: headless chrome=67.0.3396.99)
(Driver info: chromedriver=2.40.565383
platform=Linux 4.14.33-51.34.amzn1.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
通过命令行执行时,这些测试工作正常。我安装了jenkins并设置了一些作业,并开始使用jenkin作业执行相同的测试。设置好詹金斯之后,我得到了上面的错误,并且当前通过命令行测试执行也显示了相同的错误
Jenkins作为war文件安装,并从非root用户使用nohup命令启动。
下面是Web驱动程序初始化的代码
public static WebDriver getDriver(){
//Get the current OS Version
String os = System.getProperty("os.name").toLowerCase();
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("window-size=1920x1080");
//Execute Headless if on Test Server
if(os.contains("linux")) {
System.setProperty("webdriver.chrome.driver", "path to chromedriver");
chromeOptions.addArguments("--headless");
//Option added to resolve chrome not reachable issue
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-setuid-sandbox");
chromeOptions.addArguments("--disable-gpu");
}
webdriver = new ChromeDriver(chromeOptions);
return webdriver;
}
这在Mac上运行的本地计算机上没有问题
任何帮助将不胜感激。由于这一原因,他们坚持建立詹金斯的工作
卸载Jenkins后,命令行执行又可以正常工作了。与Jenkins安装有关吗?
答案 0 :(得分:0)
尝试以下代码
public static WebDriver getDriver(){
//Get the current OS Version
String os = System.getProperty("os.name").toLowerCase();
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("window-size=1920x1080");
//Execute Headless if on Test Server
if(os.contains("linux")) {
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("start-maximized");
chromeOptions.addArguments("disable-infobars");
chromeOptions.addArguments("--disable-extensions");
System.setProperty("webdriver.chrome.driver", "path to chromedriver");
}
webdriver = new ChromeDriver(chromeOptions);
return webdriver;
}
答案 1 :(得分:0)
我认为,问题在于Linux和Jenkins中chromeoption中无头chrome的分辨率设置。通过差异分辨率,结果会有所不同。尝试以下操作,现在我得到100%准确的结果。
File file = new File("/usr/bin/chromedriver");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
ChromeOptions options = new ChromeOptions();
options.addArguments("headless");
options.addArguments("window-size=1280x800");
options.addArguments("no-sandbox");
options.addArguments("–disable-dev-shm-usage");
options.addArguments("start-maximized");
options.addArguments("--disable-gpu");
options.addArguments("--disable-setuid-sandbox");
driver = new ChromeDriver(options);