-2

我正在使用Selenium::Remote::Driver模块来测试网页,

谁能告诉我如何在这里等待ajax响应。

4

2 回答 2

2

对于 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,所以可能会有一些错误。此代码将等待 20 秒以完成 ajax。

于 2012-04-30T16:33:47.113 回答
-2

解决方案

经过长时间的浏览,我得到了结果,但不是在 ajax 控制中......

我在代码中做一些逻辑,比如等待 ajax 元素出现在页面中,这解决了我的一些问题。以下是我提到的网址
WaitForElementPresent
IsElementPresent

这些链接不包含 perl 代码,但我可以使用Selenium::Remote::Driver模块中的方法来做到这一点。

于 2012-05-03T14:22:18.410 回答