web-dev-qa-db-ja.com

Selenium C#のヘッドレスFirefox

Firefoxをヘッドレスで実行したい。

ブラウザウィンドウを非表示にしたり、仮想デスクトップで開いたりしないで、Firefoxは「-headless」フラグを使用してヘッドレスモードをサポートします。

問題は、chromeでそれを行う方法を知っていますが、Firefoxではできません。

私のコード:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace MyApp {
public partial class Form1: Form {
    public Form1() {
        InitializeComponent();
    }

    private void StartBtn_Click(object sender, EventArgs e) {

        IWebDriver driver;
        FirefoxOptions options = new FirefoxOptions();
        options.AddArguments("--headless");
        driver = new FirefoxDriver(options);
    }
}
}

WinFormアプリケーションには、StartBtnという名前のボタンしかありません。ボタンをクリックすると、Firefoxはヘッドレスで実行されますが、通常のウィンドウで開きます。


pdate firefoxを56.0.1に更新しました

今、私は別のエラーを受け取ります:

タイプ 'OpenQA.Selenium.WebDriverException'の未処理の例外がWebDriver.dllで発生しました

追加情報:ブラウザーのバイナリーの場所が必要ですが、デフォルトの場所でバイナリーが見つかりません。「moz:firefoxOptions.binary」機能が提供されておらず、コマンドラインでバイナリーフラグが設定されていません

10
Raven

Firefoxのヘッドレスモードは、WindowsおよびMac OSのバージョン56以降でサポートされています。正しいバージョンがインストールされていることを確認してください。

https://developer.mozilla.org/en-US/Firefox/Headless_mode#Browser_support

Firefox v56.0.1Selenium.WebDriver v3.6.0およびgeckodriver v0.19.0(x64)これは私にとっては正しく動作します。

エラーについて:

タイプ 'OpenQA.Selenium.WebDriverException'の未処理の例外がWebDriver.dllで発生しました

正しいバージョンのgeckodriverを使用していることを確認してください。 x32ビルドでx64ビルドを使用しているようです。x64ビルドを取得してください。

https://github.com/mozilla/geckodriver/releases

4
Equalsk