我在页面中有内容标签,其中包含一些数据(每次都是新数据),单击某些按钮后会更新内容。 在后端服务器上发送XHR,我想等待答案并继续。 需要检查我从后端服务器获取的数据,但是我无法将首次初始化的数据与新数据进行比较,因为我不知道初始化的数据和新数据。
我认为可以写变量-初始化数据和新数据。 然后,我将与页面中的数据进行比较,直到数据不变为止。但是,如果数据相同,则这种情况可能很糟糕,测试将是错误的。
尝试一下:
ExpectedCondition<Boolean> jQueryLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
return ((Long)((JavascriptExecutor)driver).executeScript("return jQuery.active") == 0);
}
catch (Exception e) {
// no jQuery present
return true;
}
}
};
ExpectedCondition<Boolean> jsLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)driver).executeScript("console.log(document.readyState); return document.readyState")
.toString().equals("complete");
}
};
在从后端服务器获得答案之前,我在控制台中获得了“完成”。
答案 0 :(得分:0)
需要刷新
wait.until(ExpectedConditions.refreshed(ExpectedConditions));
一个条件的包装器,它允许元素通过重绘来更新。这可以解决具有两部分的条件问题:找到一个元素,然后检查其上的某些条件。对于这些条件,有可能先找到一个元素,然后在客户端将其重画。如果发生这种情况,则在检查条件的第二部分时会引发StaleElementReferenceException。