2017-07-16 137 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。