如何在无头模式下启动ChromeDriver

时间:2017-07-16 16:42:28

标签: c# selenium selenium-chromedriver

我想尝试无头镀铬,但我遇到了这个问题,我无法在无头模式下启动驱动程序。我关注google documentation。我错过了什么吗?代码执行卡在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);

5 个答案:

答案 0 :(得分:40)

<强>更新
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
}

日期

在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);

答案 1 :(得分:4)

对于那些没有获得ChromeDriver参考的人。 使用此步骤:

  1. 从此处下载dll:http://seleniumtestings.com/selenium-download/

  2. 提取,您应该看到:Selenium.WebDriverBackedSelenium.dll,ThoughtWorks.Selenium.Core.dll,WebDriver.dll和WebDriver.Support.dll

  3. 通过&#34;添加参考&#34;

  4. 添加这些文件

    现在你可以使用它了:

    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文件的错误,请尝试通过nuget添加Selenium.WebDriver.ChromeDriver,WebDriver.ChromeDriver,WebDriver.ChromeDriver.win32,Selenium.Chrome.WebDriver。

答案 2 :(得分:2)

作为替代方案:

  • 通过NuGet添加2个库,如下图所示。

  • 请尝试以下代码:

    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

答案 3 :(得分:1)

您正在运行什么操作系统?我在developers.google.com/web/updates/2017/04/headless-chrome上看到,在Chrome 60之前无法在Windows上使用无头。

答案 4 :(得分:0)

下面,我给出了如何将Firefox和Chrome浏览器的headless设置为true。

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);