在selenium web驱动程序中等待AJAX​​响应的Perl代码

时间:2012-04-30 11:30:46

标签: ajax perl selenium webdriver

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

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

2 个答案:

答案 0 :(得分:2)

对于jQuery:

$driver->execute_script("return jQuery.active")

原型:

$driver->execute_script("return ajax.activeRequestCount")

对于Dojo:

$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。

答案 1 :(得分:-2)

经过长时间的浏览后,我得到的结果却没有得到ajax控制...

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

这些链接不包含perl代码,但我可以使用Selenium::Remote::Driver模块中的方法执行此操作。