【问题标题】:Jenkins shows an error chrome not reachableJenkins 显示错误 chrome 无法访问
【发布时间】:2018-07-03 05:51:17
【问题描述】:

当我在 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 后出现上述错误,目前通过命令行测试执行也显示相同的错误

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 后,命令行执行再次开始正常工作。是不是跟Jenkins安装有关?

【问题讨论】:

    标签: linux jenkins selenium-chromedriver


    【解决方案1】:

    试试下面的代码

    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;
        }
    

    【讨论】:

    • 用上面的代码试过了,还是不行。不断遇到同样的问题
    • 您的 chrome 驱动程序可执行吗?
    • 同时检查 chrome 驱动的路径
    • Chrome驱动是可执行的,路径也正确。当通过命令行执行时,这在早期工作正常。安装Jenkins后开始报错
    【解决方案2】:

    在我看来,问题在于 Linux 和 Jenkins 中 chromeoptions 中无头 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 2017-12-08
      • 2021-02-11
      • 2023-01-19
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多