无法从Selenium打开Chrome无头

时间:2017-06-27 10:23:26

标签: selenium selenium-chromedriver google-chrome-headless

我在这里使用maven。这是我的Selenium代码:

DesiredCapabilities capb = DesiredCapabilities.chrome();
    capb.setCapability("chrome.binary","/Applications/Google Chrome.app/Contents/MacOS/Google Chrome");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless","--disable-gpu", "--no-sandbox","--remote-debugging-port=9222");
    capb.setCapability(ChromeOptions.CAPABILITY, options);
    System.setProperty("webdriver.chrome.driver","/Users/nitinkumar/TEST/chromedriver");
    try{
    ChromeDriver driver = new ChromeDriver(capb);
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.get("https://qa.cmnetwork.co");
    driver.quit();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

当我运行“mvn test”时,它会在GUI模式下启动chrome。但它应该在无头模式下打开。我有 chrome vesrion 59.0 OS X优胜美地(10.10.5) chromedriver 2.30 Selenium 3.4.0

1 个答案:

答案 0 :(得分:3)

它不会在GUI模式下打开。只需打开chrome启动器图标。这是一种预期的行为。

您必须删除参数--remote-debugging-port。这将阻止推出无头Chrome。所以脚本永远不会前进。你会得到一个chrome not reachable错误

所以改变像

这样的论点
options.addArguments("--headless","--disable-gpu", "--no-sandbox");

此外,不需要--no-sandbox。根据{{​​3}},只有--headless--disable-gpu标志就足够了

除非您安装了多个版本的Chrome,否则也不需要DesiredCapabilities

所以headless-chrome的简单代码

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless","--disable-gpu");
    System.setProperty("webdriver.chrome.driver","/Users/nitinkumar/TEST/chromedriver");

    ChromeDriver driver = new ChromeDriver(options);
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.get("https://qa.cmnetwork.co");
    driver.quit();