如何在无头模式下启动ChromeDriver

Eva*_*s B 29 c# selenium selenium-chromedriver

我想尝试无头镀铬,但我遇到了这个问题,我无法在无头模式下启动驱动程序.我正在关注谷歌文档.我错过了什么吗?该代码执行陷在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);
Run Code Online (Sandbox Code Playgroud)

Eva*_*s B 50

更新
Chrome版本60已经完成,所以您需要做的就是通过Nuget下载Chromdriver和Selenium并使用这个简单的代码,一切都像魅力一样.惊人.

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

...



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

using (var browser = new ChromeDriver(chromeOptions))
{
  // add your code here
}
Run Code Online (Sandbox Code Playgroud)

DATED

在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);
Run Code Online (Sandbox Code Playgroud)

  • Selenium.WebDriver.ChromeDriver (3认同)

Har*_*ono 5

对于您而言,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);   
Run Code Online (Sandbox Code Playgroud)

====

如果运行之后,仍然遇到有关没有ChromeDriver.exe文件的错误,请尝试通过nuget添加Selenium.WebDriver.ChromeDriver,WebDriver.ChromeDriver,WebDriver.ChromeDriver.win32,Selenium.Chrome.WebDriver。