3

セレンを使用してJavaスクリプト変数を挿入し、検証のために取得しています。

以下は、Selenium バージョン 2.53.1 で正常に動作していた私のサンプル コードです。Selenium 3 にアップグレードして、Firefox 用の gecko ドライバーを使い始めたとき、値を取得しているときに例外がスローされます。

driver.executeScript("globalVar='Amit';");
Object result = driver.executeScript("return globalVar");
System.out.println(result.toString());

例外:

org.openqa.selenium.JavascriptException: ReferenceError: globalVar is not defined

Selenium 3 では、同じコードが Chrome でも機能します。

ここで何か不足していますか?または、Firefox/Gecko ドライバーでそのようなことを可能にする機能が追加されていますか?

4

1 に答える 1

0

実行するスクリプトで設定する変数はグローバルではありません。それらは実行される関数のスコープ内に「座っています」。複数の実行されたスクリプト間でアクセスするグローバル変数が必要な場合は、使用可能なグローバル オブジェクトのいずれかを使用する必要がありますwindow

driver.executeScript("window.globalVar = 'Amit';");
Object result = driver.executeScript("return window.globalVar");
System.out.println(result.toString());
于 2016-12-20T14:58:27.337 に答える