WebページのテストにSelenium::Remote::Driverモジュールを使用していますが、
ここでajaxの応答を待つ方法を誰か教えてください。
WebページのテストにSelenium::Remote::Driverモジュールを使用していますが、
ここでajaxの応答を待つ方法を誰か教えてください。
jQuery の場合:
$driver->execute_script("return jQuery.active")
プロトタイプの場合:
$driver->execute_script("return ajax.activeRequestCount")
道場の場合:
$driver->execute_script("return dojo.io.XMLHTTPTransport.inFlight.length")
整数が返され、返された値が 0 の場合、AJAX リクエストは完了します。
$count = 0;
while ($count < 20) {
if ($driver->execute_script("return jQuery.active") == 0) {
last;
}
$count ++;
sleep(1);
}
perl はよくわからないので、間違いがあるかもしれません。このコードは、ajax が完了するまで 20 秒待機します。
長いブラウジングの後、結果は得られましたが、ajax制御ではありません...
ページに ajax 要素が表示されるのを待つなど、コードでいくつかのロジックを実行しています。これにより、問題の一部が解決されました。以下は、私が参照した URL
です。 WaitForElementPresent
IsElementPresent
これらのリンクには perl コードは含まれていませんが、Selenium::Remote::Driverモジュールのメソッドを使用してそれを行うことができます。