Как запустить ChromeDriver в режиме без звука

Я хочу опробовать безголовый хром, но я столкнулся с этой проблемой, что я не могу запустить драйвер в режиме безглавых. Я следил за документацией Google. я что-то пропустил? Исполнение кода застревает в 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<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);

Ответ 1

ОБНОВИТЬ
Выпущена версия Chrome 60, поэтому все, что вам нужно сделать, это загрузить Chromdriver и Selenium через Nuget и использовать этот простой код, и все работает как шарм. Удивительно.

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

...



var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("headless");

using (var browser = new ChromeDriver(chromeOptions))
{
  // add your code here
}

ОТ

Существует решение, пока не будет выпущен официальный релиз Chrome 60. Вы можете скачать Chrome Canary и использовать без него. После установки установите 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<string>() { "no-sandbox", "headless", "disable-gpu" });

var _driver = new ChromeDriver(chromeOptions);

Ответ 2

Для вас это не получило ссылки на 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<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.

Ответ 3

В качестве альтернативы:

  • Добавьте 2 библиотеки через NuGet, как показано ниже.

  • Попробуйте ниже Код:

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

Selenium Chrome WebDriver

Ответ 4

Какую ОС вы используете? Я вижу на developers.google.com/web/updates/2017/04/headless-chrome, что безголовый не будет доступен в Windows до Chrome 60.

Ответ 5

Ниже я рассказал, как установить для headless значение true для браузеров Firefox и Chrome.

FirefoxOptions ffopt = new FirefoxOptions();
FirefoxOptions option = ffopt.setHeadless(true);
WebDriver driver = new FirefoxDriver(option);


ChromeOptions coptions = new ChromeOptions();
ChromeOptions options = coptions.setHeadless(true);
WebDriver driver = new ChromeDriver(options);