Jenkins显示无法访问的错误Chrome

时间:2018-07-03 05:51:17

标签: linux jenkins selenium-chromedriver

在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安装有关吗?

2 个答案:

答案 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);