2016-12-16 20 views
0

2.53.0から新しいバージョン3.0.1を使用するためにSelenium Test Projectによってアップグレードしました。私は現在、Geckodriver v0.11.1を使用しています。現在は、バージョン46.0.1のFirefoxでのみテストしています。今二行目をアップグレードするには、次のエラーで失敗し

driver.Navigate().GoToUrl(DefaultBaseURL); 
driver.ExecuteScript("$('#" + XXXX + "').val(\"" + XXXX + "\");"); 

後:I場合

WebDriverException: ReferenceError: $ is not defined

私は再び仕事をすることができ、私はこのように見えたコードを持っていたアップグレードする前に

「UseLegacyImplementation」を有効にします。 Seleniumのウェブサイトによると、これは"indicating whether to use the legacy driver implementation."です。そこには詳細がたくさんありません...しかし、私がそれを有効にすると、2.53.0と同じように動作するようです。

この問題に関する私の最初の推測は、それがhereと同じようなタイミング関連であるということです。しかし、私が2つのラインの間に大きな待ち時間を置いたとしても、最終結果は常に同じです。新しいセレニウムライブラリがページが既にjQueryをロードしたことを検出できないかのように見えます。

"UseLegacyImplementation"を有効にせずに、Selenium 3.0.1でJQuery依存スクリプトを呼び出す方法はありますか?

答えて

0

UseLegacyImplementationプロパティは、.NETバインディングに、Seleniumプロジェクト自体によって開発および維持されている従来のブラウザ拡張ベースのドライバ実装を使用するように指示します。つまり、trueに設定すると、ではなく、にgeckodriverを使用するよう指示されます。 2.xから3.xへの変更の1つは、このプロパティのデフォルト値が変更されたことです。 3.xでは、デフォルトでgeckodriverを使用しようとしています。

geckodriverを使用している場合は、それ以降のバージョンのFirefoxでうまくいくことがわかります。あなたが経験しているかもしれないものは、後でブラウザ版で修正されたgeckodriverのバグかもしれません。もしあなたがFirefox 46に残っておきたいのであれば、残念ながらSeleniumプロジェクトの既存の実装(UseLegacyImplementation = true)を残しておくことをお勧めします。geckodriverを使いたい場合は、より新しいバージョンのFirefoxに移行する必要があります。

+0

私はFirefox 47.0.2にアップグレードしました。これは最新バージョンで、 "UseLegacyImplementation"は無効になっていますが、私はまだ同じ問題を抱えています。各コンポーネントのどのバージョンが他のコンポーネントと互換性があるかについては、一般的にはリリースノートを参照していますが、かなり時間がかかり、時には不完全な方法でその情報を取得することがあります。 –

+0

Seleniumのドキュメントは本当に残念です。 – Elmue

+0

多くの全ボランティアオープンソースプロジェクト@Elmueと同様、ドキュメントはしばしば寄稿者が考える最初のものではありませんが、多くのボランティアのオープンソースプロジェクトのように、ドキュメント化に貢献しています。プロジェクトに関わる素晴らしい方法です。ドキュメント「本当に残念です」と、プルの要求は最も確実に歓迎されます。 – JimEvans

関連する問題