Как запустить 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. Используйте этот шаг:
-
Загрузите dll из этого: http://seleniumtestings.com/selenium-download/
-
Извлеките, и вы должны увидеть: Selenium.WebDriverBackedSelenium.dll, ThoughtWorks.Selenium.Core.dll, WebDriver.dll и WebDriver.Support.dll
-
Добавьте эти файлы через "Добавить ссылку"
Теперь вы можете использовать его:
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);
Ответ 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);