如何检查是否有来自浏览器的待处理请求(Ajax及其变体)
我处理的一些网站有大量的ajax请求。我计划等待Ajax请求完成,然后再单击以断言元素。目前我使用
try {
if (driver instanceof JavascriptExecutor) {
JavascriptExecutor jsDriver = (JavascriptExecutor)driver;
for (int i = 0; i< timeoutInSeconds; i++)
{
Object numberOfAjaxConnections = jsDriver.executeScript("return jQuery.active");
// return should be a number
if (numberOfAjaxConnections instanceof Long) {
Long n = (Long)numberOfAjaxConnections;
System.out.println("Number of active jquery ajax calls: " + n);
if (n.longValue() == 0L) break;
}
Thread.sleep(1000);
}
}
else {
System.out.println("Web driver: " + driver + " cannot execute javascript");
}
}
catch (InterruptedException e) {
System.out.println(e);
}
但它适用于Ajax请求,但不适用于任何具有jQuery库变体的类似请求。
注意:
document.readyState == 'complete'
它不适用于Ajax请求或任何其他类似的替代方案。
这两个测试都不是由我编写的,也不属于单个Web应用程序。所以我无法编辑 Web 应用。