web-dev-qa-db-ja.com

Selenium using Java - ドライバの実行ファイルへのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。

私はMozillaを起動しようとしていますが、それでも私はこのエラーを受けています:

スレッド "main"での例外Java.lang.IllegalStateException:ドライバの実行可能ファイルへのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。詳細については、 https://github.com/mozilla/geckodriver を参照してください。最新バージョンは、 https://github.com/mozilla/geckodriver/releases からダウンロードできます。

私はSelenium 3.0.01 Beta版とMozilla 45を使っています。私はMozilla 47でも試しました。それでも同じこと。

58
Reema

Seleniumクライアントバインディングは、システムgeckodriverからPATH実行可能ファイルを見つけようとします。実行可能ファイルを含むディレクトリをシステムパスに追加する必要があります。

  • Unixシステムでは、bash互換のシェルを使用している場合、システムの検索パスに次のように追加できます。

    export PATH=$PATH:/path/to/geckodriver
    
  • Windowsでは、Pathシステム変数を更新して、実行可能ファイルに完全なディレクトリパスを追加する必要があります。原則はUnixの場合と同じです。

以下のすべてのプログラミング言語バインディングを使用して最新のFirefoxを起動するための構成は、Selenium2に適用され、Marionetteを明示的に有効にします。 Selenium 3.0以降では、デフォルトで有効になっているため、Marionetteを使用するために何もする必要はありません。

テストでMarionetteを使用するには、目的の機能を更新して使用する必要があります。

Java

例外として、最新のgeckodriver.exehere からダウンロードし、ダウンロードされたgeckodriver.exeパスをシステムのプロパティとして変数webdriver.gecko.driverで設定する必要があると明確に述べていますマリオネットドライバーを開始し、以下のようにfirefoxを起動する前に:-

//if you didn't update the Path system variable to add the full directory path to the executable as above mentioned then doing this directly through code
System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");

//Now you can Initialize marionette driver to launch firefox
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new MarionetteDriver(capabilities); 

Selenium3の場合は、次のように使用します。

WebDriver driver = new FirefoxDriver();

問題が解決しない場合は、このリンクをたどってください。問題の解決に役立ちます

。NET

var driver = new FirefoxDriver(new FirefoxOptions());

Python

from Selenium import webdriver
from Selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.FIREFOX

# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True

# Path to Firefox DevEdition or Nightly.
# Firefox 47 (stable) is currently not supported,
# and may give you a suboptimal experience.
#
# On Mac OS you must point to the binary executable
# inside the application package, such as
# /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin
caps["binary"] = "/usr/bin/firefox"

driver = webdriver.Firefox(capabilities=caps)

ルビー

# Selenium 3 uses Marionette by default when firefox is specified
# Set Marionette in Selenium 2 by directly passing marionette: true
# You might need to specify an alternate path for the desired version of Firefox

Selenium::WebDriver::Firefox::Binary.path = "/path/to/firefox"
driver = Selenium::WebDriver.for :firefox, marionette: true

JavaScript(Node.js)

const webdriver = require('Selenium-webdriver');
const Capabilities = require('Selenium-webdriver/lib/capabilities').Capabilities;

var capabilities = Capabilities.firefox();

// Tell the Node.js bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.set('marionette', true);

var driver = new webdriver.Builder().withCapabilities(capabilities).build();

RemoteWebDriverの使用

任意の言語でRemoteWebDriverを使用する場合は、Marionette GridでSeleniumを使用できます。

Python

caps = DesiredCapabilities.FIREFOX

# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True

driver = webdriver.Firefox(capabilities=caps)

ルビー

# Selenium 3 uses Marionette by default when firefox is specified
# Set Marionette in Selenium 2 by using the Capabilities class
# You might need to specify an alternate path for the desired version of Firefox

caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true, firefox_binary: "/path/to/firefox"
driver = Selenium::WebDriver.for :remote, desired_capabilities: caps

Java

DesiredCapabilities capabilities = DesiredCapabilities.firefox();

// Tell the Java bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.setCapability("marionette", true);

WebDriver driver = new RemoteWebDriver(capabilities); 

。NET

DesiredCapabilities capabilities = DesiredCapabilities.Firefox();

// Tell the .NET bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.SetCapability("marionette", true);

var driver = new RemoteWebDriver(capabilities); 

注:Seleniumが他のブラウザーベンダーから入手できる他のドライバーと同様に、Mozillaはブラウザーと一緒に実行する実行可能ファイルをリリースしました。詳細については、 this に従ってください。

最新のFirefoxをサポートする最新のgeckodriver実行可能ファイルをここからダウンロードできます

87
Saurabh Gaur
  1. SeleniumhqのWebサイトからgeckoドライバをダウンロードしてください(現在はGitHubにあり、 Here からダウンロードできます)。
    1. Zip(またはtar.gz)があるのでそれを解凍します。
    2. 解凍後、geckodriver.exeファイル(Linuxの適切な実行可能ファイル)になります。
    3. SeleniumGeckoという名前のCフォルダを作成します(または適切です)。
    4. Geckodriver.exeをSeleniumGeckoにコピーして貼り付けます
    5. Geckoドライバのパスを以下のように設定します

System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.10.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
19
Kanth25

Selenium WebDriver Javaコード:

あなたのプラットフォームに基づいて https://github.com/mozilla/geckodriver/releases からGeckoドライバをダウンロードしてください。あなたの選択による場所でそれを抽出してください。以下のコードを書きます。

System.setProperty("webdriver.gecko.driver", "D:/geckodriver-v0.16.1-win64/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.lynda.com/Selenium-tutorials/Mastering-Selenium-Testing-Tools/521207-2.html");
2
Ripon Al Wasim

SeleniumのすべてのDriverサービスは、ドライバーオブジェクトの作成中に同様のコード(以下はFirefox固有のコード)を呼び出します。

 @Override
 protected File findDefaultExecutable() {
      return findExecutable(
        "geckodriver", GECKO_DRIVER_EXE_PROPERTY,
        "https://github.com/mozilla/geckodriver",
        "https://github.com/mozilla/geckodriver/releases");
    }

使用するドライバには、ドライバの実行可能ファイルへのパスの値を使用してシステムプロパティを設定する必要があります。

firefox GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"の場合、これは以下のようにドライバオブジェクトを作成する前に設定できます。

System.setProperty("webdriver.gecko.driver", "./libs/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
0
chuha.billi