我要自动执行的页面的DOM中有一个元素。该表具有项目列表(购物车,1 <li>
-1行)。我要通过单击按钮来删除项目,我想等到表刷新完成。
我不想使用wait.until(ExpectedConditions.stanelessOf()
,因为我希望此脚本是可调整的,而不是关注列表中特定数量的元素。我也不想使用Thread.sleep
,因为它看起来并不优雅。
我是在研究目的时这样做的,否则我可能会找到一种更简单的方法来做到这一点,但并不是那样的“优雅”,我也不会学到任何新东西。
答案 0 :(得分:1)
您可以尝试以下代码:
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
答案 1 :(得分:0)
您可以尝试以下操作: 此代码使用“ ExpectedConditions”等待元素的可见性
switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean selected) {
//If switch has a tag, ignore below
if(compoundButton.getTag() != null)
return;
if (selected) {
// do something
} else {
// do something else
}
}
});
也可以将String xPathSplit = <xpath>
try {
WebDriverWait wait = new WebDriverWait(driver, 90);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xPathSplit)));
} catch (Throwable e) {
e.printStackTrace();
}
替换为visibilityOfElementLocated
答案 2 :(得分:0)
以下代码使用Javascript Executor本身检查文档状态:
public void waitForPageToLoad() {
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver wdriver) {
return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
}
});
}