如何在无头模式下启动ChromeDriver

我想尝试无头镀铬,但我遇到了这个问题,我无法在无头模式下启动驱动程序。 我正在关注谷歌文档 。 我错过了什么吗? 代码执行卡在var browser = new ChromeDriver(); 线

这是我的代码:

 var chromeOptions = new ChromeOptions { BinaryLocation = @"C:\Users\2-as Aukstas\Documents\Visual Studio 2017\Projects\ChromeTest\ChromeTest\bin\Debug\chromedriver.exe", DebuggerAddress = "localhost:9222" }; chromeOptions.AddArguments(new List() {"headless", "disable-gpu" }); var browser = new ChromeDriver(chromeOptions); browser.Navigate().GoToUrl("https://stackoverflow.com/"); Console.WriteLine(browser.FindElement(By.CssSelector("#h-top-questions")).Text); 

UPDATE
Chrome版本60已经推出,所以你需要做的就是通过Nuget下载Chromdriver和Selenium并使用这个简单的代码,一切都像魅力一样。 惊人。

 var chromeOptions = new ChromeOptions(); chromeOptions.AddArguments("headless"); using (var browser = new ChromeDriver(chromeOptions)) { // add your code here } 

DATED

在Chrome 60正式发布之前,有一个解决方案。 您可以下载Chrome Canary并使用headless。 安装后设置BinaryLocation指向chrome canary也注释掉DebuggerAddress行(它强制chrome超时):

 var chromeOptions = new ChromeOptions { BinaryLocation = @"C:\Users\2-as Aukstas\AppData\Local\Google\Chrome SxS\Application\chrome.exe", //DebuggerAddress = "127.0.0.1:9222" }; chromeOptions.AddArguments(new List() { "no-sandbox", "headless", "disable-gpu" }); var _driver = new ChromeDriver(chromeOptions); 

对于那些没有获得ChromeDriver参考的人。 使用此步骤:

  1. 从这里下载DLL: http : //seleniumtestings.com/selenium-download/

  2. 提取,您应该看到:Selenium.WebDriverBackedSelenium.dll,ThoughtWorks.Selenium.Core.dll,WebDriver.dll和WebDriver.Support.dll

  3. 通过“添加参考”添加这些文件

现在你可以使用它:

 String url = "http://www.google.com"; var chromeOptions = new ChromeOptions(); chromeOptions.AddArguments(new List() { "--silent-launch", "--no-startup-window", "no-sandbox", "headless",}); var chromeDriverService = ChromeDriverService.CreateDefaultService(); chromeDriverService.HideCommandPromptWindow = true; // This is to hidden the console. ChromeDriver driver = new ChromeDriver(chromeDriverService, chromeOptions); driver.Navigate().GoToUrl(url); 

====

如果您在运行后仍然遇到没有ChromeDriver.exe文件的错误,请尝试通过nuget添加Selenium.WebDriver.ChromeDriver,WebDriver.ChromeDriver,WebDriver.ChromeDriver.win32,Selenium.Chrome.WebDriver。

作为替代:

  • 通过NuGet添加2个库,如下图所示。

  • 请尝试以下代码:

     String url = "http://www.google.com"; var chromeOptions = new ChromeOptions(); chromeOptions.AddArguments(new List() { "headless" }); var chromeDriverService = ChromeDriverService.CreateDefaultService(); ChromeDriver driver = new ChromeDriver(chromeDriverService, chromeOptions); driver.Navigate().GoToUrl(url); 

Selenium Chrome WebDriver

你在运行什么操作系统? 我在developers.google.com/web/updates/2017/04/headless-chrome上看到,在Chrome 60之前无法在Windows上使用无头。