非同期スクリプトを実行しようとすると、セレン2.25.0で例外が発生するのはなぜですか。
//テストページに移動します。 文字列script="var callback = arguments [arguments.length-1];" + "getResult(callback)"; オブジェクトの結果=((JavascriptExecutor)driver).executeAsyncScript(script、 ""); System.out.println(result);
テストページには、次のスクリプトが含まれています。
var result = true; function getResult(callback){ window.setTimeout(function(){callback(true);}、3000); }
これは例外をスローします:
失敗:testSeleniumAsync org.openqa.selenium.TimeoutException:スクリプトの実行に失敗しました。スクリプト:var callback = arguments [arguments.length-1]; getResult(callback); 2ミリ秒後に非同期スクリプトの結果を待つためにタイムアウトしました(警告:サーバーはスタックトレース情報を提供しませんでした) コマンドの継続時間またはタイムアウト:11ミリ秒 ビルド情報:バージョン: '2.25.0'、リビジョン: '17482'、時間: '2012-07-18 22:18:01' システム情報:os.name:'Linux'、os.arch:'amd64'、os.version: '3.2.0-27-generic'、java.version: '1.6.0_26' ドライバー情報:driver.version:RemoteWebDriver セッションID:6347b507cf22b6c2d3312937a82a0a02 sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド)で sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)で sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)で
スクリプトからsetTimeoutを削除し、callbackを呼び出すと、機能します。しかし、これは私が望むものではありません。
ありがとう。