web-dev-qa-db-ja.com

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);
26
Evaldas B

UPDATE
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);
45
Evaldas B

あなたにとっては、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ファイルがないというエラーが引き続き発生する場合は、nugetを使用してSelenium.WebDriver.ChromeDriver、WebDriver.ChromeDriver、WebDriver.ChromeDriver.win32、Selenium.Chrome.WebDriverを追加してみてください。

4
Haryono

代替として:

  • 下の図のように、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

2
Haryono

実行しているOS developers.google.com/web/updates/2017/04/headless-chromeで、ヘッドレスはChrome 60までWindowsで使用できないことがわかりました。

1
Kapil

以下に、Firefoxおよびchromeブラウザーのヘッドレスを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);
0