0

Selenium Test Project によって 2.53.0 から新しいバージョン 3.0.1 を使用するようにアップグレードしました。現在、Geckodriver v0.11.1 を使用しており、現在、バージョン 46.0.1 の Firefox のみでテストしています。

アップグレード前は、次のようなコードがありました。

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

アップグレード後、次のエラーで 2 行目が失敗します。

WebDriverException: ReferenceError: $ が定義されていません

「UseLegacyImplementation」を有効にすると、再び機能するようになります。Selenium の Web サイトによると、これは「レガシー ドライバーの実装を使用するかどうかを示しています」。そのため、詳細はそれほど多くありません...しかし、有効にすると、2.53.0 と同じように動作するようです。

この問題に関する私の最初の推測は、ここで言及されている投稿と同様に、タイミングに関連していることです。しかし、2 つの行の間に長い待ち時間を置いても、最終結果は常に同じです。新しいセレン ライブラリは、ページが既に jQuery を読み込んでいることを検出できないようです。

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

4

1 に答える 1

0

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

geckodriver を使用している場合、新しいバージョンの Firefox でエクスペリエンスが向上することがわかります。発生している可能性があるのは、最新のブラウザー バージョンで既に修正されている geckodriver のバグである可能性があります。Firefox 46 を使用したい場合は、従来の Selenium プロジェクトの実装 ( UseLegacyImplementation = true) を使用することをお勧めします。geckodriver を使用したい場合は、より新しいバージョンの Firefox に移行する必要があります。

于 2016-12-18T03:00:09.750 に答える