我正在使用Selenium::Remote::Driver模块测试网页,
有谁能告诉我如何在这里等待ajax响应。
答案 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模块中的方法执行此操作。