使用硒来自动化测试。
所以我有一个由javascript更改的元素。如何检测该项目文本的更改?例如,这是项目改变之前和之后的html:
之前:
<span id="errorMsg"></span>
后:
<span id="errorMsg">All fields not filled out</span>
这是我在点击提交按钮后调用的当前帮助函数。它在加载新页面时效果很好但在这种情况下不起作用。
public void waitforText(String search) {
WebDriverWait myWait = new WebDriverWait(Grid.driver(), Grid.getNewTimeOut() / 1000L);
ExpectedCondition conditionToCheck = new ExpectedCondition() {
public Boolean apply(WebDriver input) {
WebElement bodyTag = Grid.driver().findElement(By.tagName("body"));
return Boolean.valueOf(bodyTag.getText().contains(search));
}
};
myWait.until(conditionToCheck);
}
以及如何调用函数:
waitforText("All fields not filled out");
我可以看到页面中的消息已更改,但selenium未检测到此消息。我知道我可以使用直接睡眠或等待,但如果可以避免我真的不想走这条路
答案 0 :(得分:2)
使用textToBePresentInElement
expected condition:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.textToBePresentInElement(By.id("errorMsg"), "All fields not filled out"));