2017-07-16 131 views
5

我想尝试无头Chrome浏览器,但是我遇到了这个问题,我无法在无头模式下启动驱动程序。我正在关注google documentation。我错过了什么吗?该代码执行陷在var browser = new ChromeDriver();线如何在无头模式下启动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<string>() {"headless", "disable-gpu" }); 

var browser = new ChromeDriver(chromeOptions); 


browser.Navigate().GoToUrl("https://stackoverflow.com/"); 
Console.WriteLine(browser.FindElement(By.CssSelector("#h-top-questions")).Text); 
+0

什么是你的'chromedriver.exe'版本? – haim770

+0

我的版本是2.30.0。 NuGet –

+0

'BinaryLocation'应该指向Chrome(浏览器)的'exe',而不是'chromedriver.exe'。 – haim770

回答

9

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

var chromeOptions = new ChromeOptions(); 
chromeOptions.AddArguments(new List<string>() {"headless"}); 

var browser = new ChromeDriver(chromeOptions); 

DATED

有一个解决方案,直到铬60的正式发布将被释放。您可以下载Chrome Canary并使用它。安装设置BinaryLocation后指向Chrome Canary版也注释掉DebuggerAddress线(它迫使铬超时):

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<string>() { "no-sandbox", "headless", "disable-gpu" }); 

var _driver = new ChromeDriver(chromeOptions); 
+0

Chromedriver需要哪个nuget包,有一个很少--Chromium.ChromeDriver,WebDriverChromeDriver,Selenium.Webdriver.ChromeDriver等 – thisextendsthat

+1

Selenium.WebDriver.ChromeDriver –

0

您运行的是什么操作系统?我看到那个developers.google.com/web/updates/2017/04/headless-chrome无头将无法使用在Windows到Chrome浏览器60

+0

Windows 10.那答案是...... :( –

+0

@EvaldasB - 请问您接受答案,如果它反映了您的问题。谢谢 – Kapil

0

对于你,没有为ChromeDriver得到参考。 使用此步骤:

  1. 从这个下载的dll:http://seleniumtestings.com/selenium-download/

  2. 提取物,你应该看到:Selenium.WebDriverBackedSelenium.dll,ThoughtWorks.Selenium.Core.dll,WebDriver.dll和的webdriver .Support.dll

  3. 通过 “添加引用” 添加这些文件

现在你可以使用我T:

String url = "http://www.google.com"; 
var chromeOptions = new ChromeOptions(); 
chromeOptions.AddArguments(new List<string>() { 
    "--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文件后,尝试添加Selenium.WebDriver.ChromeDriver,WebDriver.ChromeDriver,webdriver的。 ChromeDriver.win32,Selenium.Chrome.WebDriver通过nuget。