[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、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
ベータ版と
Mozilla 45
. で試してみました。
Mozilla 47
でも、やはり同じです。
解決方法は?
その
Selenium
クライアントバインディングは
geckodriver
システムから実行可能な
PATH
. 実行ファイルを含むディレクトリをシステムパスに追加する必要があります。
-
について Unix をシステムの検索パスに追加するには、bash 互換のシェルを使用している場合、次のようにします。
export PATH=$PATH:/path/to/geckodriver
-
について ウィンドウズ を使用する場合は、システム変数 Path を更新して、実行ファイルへのフルディレクトリパスを追加する必要があります。原理はUnixと同じです。
任意のプログラミング言語バインディングを使用して最新のFirefoxを起動するための以下のすべての構成は、以下のものに適用されます。
Selenium2
で明示的にMarionetteを有効にしてください。Selenium 3.0 以降では、Marionette はデフォルトで有効になっているので、何もする必要はないでしょう。
Marionette をテストに使用するには、希望する機能を更新する必要があります。
ジャワ :
この例外は、最新版をダウンロードする必要があることを明確に示しています。
geckodriver.exe
から
ここで
を設定し、ダウンロードした
geckodriver.exe
という変数で、システムプロパティとして、コンピュータに存在するパスを指定します。
webdriver.gecko.driver
以下のように、Marionetteドライバを起動し、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());
パイソン :
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
で
Selenium
グリッド
パイソン :
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
ジャワ :
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);
Note : 他のブラウザベンダーから Selenium に提供されている他のドライバのように、Mozilla はブラウザと一緒に動作する実行ファイルをリリースしています。フォローする これ をご覧ください。
関連
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】なぜjava.io.Fileにはcloseメソッドがないのでしょうか?
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み】Javaの".class expected "について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している