2

セレン テストを Firefox v50.x で機能するように更新する作業を行っているため、geckodriver v0.11 と互換性を持たせる必要があります。

Firefox::Profile を使用して Web ドライバーを初期化すると、プロファイルに設定されたフィールドを認識しないため、Web ドライバーがクラッシュするようになりました。

ArgumentError
unknown option: {:profile=>#<Selenium::WebDriver::Firefox::Profile:0x00000005088bf8 @model="selenium_profile", @native_events=false, @secure_ssl=false, @untrusted_issuer=true, @load_no_focus_lib=false, @additional_prefs={}, @extensions={}>}

プロファイルを使用して webdriver を初期化しないだけでテストを実行することはできますが、特定のユーザー エージェントが必要なため、一部のテストは失敗します。

ドキュメントを読んだ後、この機能には moz:firefoxOptions を使用する必要があるようですが、実際に moz:firefoxoptions を使用する方法を示すコード例は見つかりません。

moz:firefoxOptions の使用方法、または selenium-webdriver 3.0.3 と geckodriver v0.11 で firefox ユーザー エージェントを設定するその他の方法を示すコード例を教えてください。

4

1 に答える 1

1

現在、geckodriver のプロファイル オプションを介してプロファイルを渡すことはできません。これはIssue #2933に記載されており、現在、この機能を追加するための PR ( PR #3174 ) があります。

今のところ、次のことができるはずです。

次のいずれかでプロファイルを作成します

profile = Selenium::WebDriver::Firefox::Profile.new('/path/to/profile')

また

profile = Selenium::WebDriver::Firefox::Profile.from_name('name_of_profile')

それから

caps = Selenium::WebDriver::Remote::W3CCapabilities.firefox
caps[:firefox_options] = { profile: profile.as_json['zip'] }
driver = Selenium::WebDriver.for(:firefox, desired_capabilities: caps)

[:firefox_options]moz:firefoxOptionsコードで翻訳されます

ちなみに、FF50 に対して実行しているため、geckodriver の代わりにレガシー FF ドライバーを使用して実行することもできます。

于 2016-12-06T02:46:16.863 に答える