2017-07-16 4 views
5

Ich möchte Headless Chrome ausprobieren, aber ich laufe auf dieses Problem, dass ich den Treiber im Headless-Modus nicht starten kann. Ich folgte google documentation. Fehle ich etwas? Die Ausführung von Code wird in var browser = new ChromeDriver(); Linie steckenSo starten Sie ChromeDriver im Headless-Modus

Hier ist mein Code:

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

Was ist Ihre 'chromedriver.exe' Version? – haim770

+0

Meine Version ist 2.30.0. Bekommt es von NuGet –

+0

'BinaryLocation' sollte auf die' exe' von Chrome (der Browser) zeigen, nicht 'chromedriver.exe' – haim770

Antwort

9

UPDATE
Chrome-Version 60 ist, so alles, was Sie zur Verfügung Sie müssen Chromdriver und Selenium über Nuget herunterladen und diesen einfachen Code verwenden, und alles funktioniert wie ein Zauber. Tolle.

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

var browser = new ChromeDriver(chromeOptions); 

DATIERT

Es gibt eine Lösung, bis die offizielle Version von Chrome 60 wird freigegeben. Sie können Chrome Canary herunterladen und Headless damit verwenden. Nach der Installation BinaryLocation gesetzt Kanarienvogel Chrom-zu-Punkt auch die DebuggerAddress Zeile aus kommentieren (zwingt es Chrom Timeout):

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

Welche Nuget-Paket ist für Chromedriver erforderlich, gibt es eine einige - "Chromium.ChromeDriver", "WebDriverChromeDriver", "Selenium.Webdriver.ChromeDriver" usw. – thisextendsthat

+1

Selenium.WebDriver.ChromeDriver –

0

Welche OS Sie laufen? Ich sehe auf developers.google.com/web/updates/2017/04/headless-chrome dass ohne Kopf wird nicht auf Windows, bis Chrome 60.

+0

Windows 10. Das antwortet, dass ... :( –

+0

@EvaldasB - können Sie bitte die Antwort akzeptieren, wenn es auf Ihre Frage antwortet. Danke – Kapil

0

Für Sie, die nicht Referenz für ChromeDriver bekommen haben. diesem Schritt führen Sie:

  1. Laden Sie die DLL-Datei von dieser: http://seleniumtestings.com/selenium-download/

  2. -Extrakt, und Sie sollten sehen: Selenium.WebDriverBackedSelenium.dll, ThoughtWorks.Selenium.Core.dll, WebDriver.dll und WebDriver .Support.dll

  3. Fügen Sie diese Dateien über "Add Reference"

Jetzt können Sie i verwenden 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); 

====

Wenn nach dem Sie laufen, Sie sind immer noch mit Blick auf Fehler zu keiner ChromeDriver.exe Datei, versuchen Sie die Selenium.WebDriver.ChromeDriver hinzuzufügen, WebDriver.ChromeDriver, WebDriver. ChromeDriver.win32, Selenium.Chrome.WebDriver über nuget.

Verwandte Themen