无头模式下的Selenium FindElement和Chrome

时间:2017-08-11 17:37:01

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

在无头模式following this advice中启动chromedriver.exe并仅使用这些参数

 options.AddArgument("headless");
 options.AddArgument("window-size=1280,960");

chromedriver无形地打开。但Selenium的FindElement()命令在无头Chrome页面上找不到任何内容。相反,它会抛出此异常:

  

WebDriver.dll中出现“OpenQA.Selenium.NoSuchElementException”类型的异常,但未在用户代码中处理

     

附加信息:没有这样的元素:无法找到元素:

Q1:有没有人在Chrome的无头模式下成功运行Selenium命令?

Q2:您是否能够在无头模式下使用FindElement的chromedriver?如果是的话,你是怎么做到的?

在阅读了更多内容之后,或许某些内容可能是必要的?将此添加到Chrome启动选项,然后将chromedriver连接到它?  "remote-debugging-port=9222"
但是使用该选项,IWebDriver和chromedriver无法打开。

背景信息:回答,你为什么要这样做?主要原因是测试作为CI的一部分运行。这些是在VM上运行的测试,可能不支持1080p监视器。如果我们以无头模式运行它并以我们可能的方式设置分辨率。

1 个答案:

答案 0 :(得分:0)

在主类中添加以下代码行:

ChromeOptions options = new ChromeOptions(); 
options.setHeadless(true); 
options.addArguments("--window-size=1920,1080"); 
options.addArguments("--disable-gpu"); 
options.addArguments("--disable-extensions"); options.setExperimentalOption("useAutomationExtension", false); options.addArguments("--proxy-server='direct://'"); 
options.addArguments("--proxy-bypass-list=*"); 
options.addArguments("--start-maximized");
options.addArguments("--headless"); 
WebDriver driver = new ChromeDriver(options);