2017-07-16 44 views
5

Chcę wypróbować bezgłowy chrom, ale pojawia się ten problem, że nie mogę uruchomić sterownika w trybie bezgłowym. Śledziłem google documentation. czy czegoś brakuje? Wykonanie kodu utknie w var browser = new ChromeDriver(); liniiJak uruchomić ChromeDriver w trybie bezgłosu

Tu jest mój kodu:

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

Jaka jest twoja wersja 'chromeedriver.exe'? – haim770

+0

Moja wersja to 2.30.0. Mam go od NuGet –

+0

'BinaryLocation' powinien wskazywać na' exe' Chrome (przeglądarki), a nie 'chromedriver.exe' – haim770

Odpowiedz

9

UPDATE
Chrome w wersji 60 jest obecnie więc wszystko co musisz pobrać Chromdriver i Selenium przez Nuget i użyć tego prostego kodu, a wszystko działa jak czar. Niesamowity.

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

var browser = new ChromeDriver(chromeOptions); 

DNIA

Istnieje rozwiązanie do oficjalnej premiery Chrome 60 zostanie zwolniony. Możesz pobrać Chrome Canary i używać z nią bezgłosu. Po zestaw instalacyjny BinaryLocation aby wskazać Chrome Canary również wykomentuj linię DebuggerAddress (zmusza Chrome 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

Który pakiet nuget jest niezbędny dla Chromedriver, jest kilka - 'Chromium.ChromeDriver',' WebDriverChromeDriver', 'Selenium.Webdriver.ChromeDriver' etc – thisextendsthat

+1

Selenium.WebDriver.ChromeDriver –

0

Jaki system operacyjny, którego używasz? Widzę na developers.google.com/web/updates/2017/04/headless-chrome że bezgłowy nie będzie dostępna w systemie Windows, dopóki Chrome 60.

+0

Windows 10. To odpowiedź, która ... :( –

+0

@EvaldasB - czy możesz zaakceptować odpowiedź, jeśli odpowie na Twoje pytanie.Dziękuję – Kapil

0

Dla ciebie, że nie dostał odniesienie do ChromeDriver. Użyj tego kroku:

  1. Pobierz DLL z tego: http://seleniumtestings.com/selenium-download/

  2. Extract, i powinieneś zobaczyć: Selenium.WebDriverBackedSelenium.dll, ThoughtWorks.Selenium.Core.dll, WebDriver.dll i WebDriver .Support.dll

  3. Dodaj te pliki poprzez "Add Reference"

teraz można użyć I 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); 

====

Jeśli po uruchomieniu, nadal stoi błąd o braku pliku ChromeDriver.exe, spróbuj dodać Selenium.WebDriver.ChromeDriver, WebDriver.ChromeDriver, WebDriver. ChromeDriver.win32, Selenium.Chrome.WebDriver via nuget.