当我在页面上执行操作时,将显示一个微调器,一旦操作完成,该微调器将消失。我想等待微调框消失,以便执行assert语句。
我阅读了文档,该文档告诉我如何等待元素出现,但未提供有关如何等待元素消失的信息 我不知道如何在Cucumber,Geb,Groovy项目中实现这一目标。
答案 0 :(得分:2)
当我有更多时间时,我将稍作编辑/解释:
在您的页面对象中:
static content = {
loadingSpinner(wait:3, required:false) { $("mat-spinner") }
//this wait:3 is redundant (i think) if we also give the waitFor() a timeout
//required:false allows our wait !displayed to pass even if the element isnt there
}
def "Handle the loader"() {
try {
waitFor(2) { loadingSpinner.isDisplayed() }
} catch (WaitTimeoutException wte) {
//do nothing, if spinner doesnt load then thats ok
//most likely the spinner has come and gone before we finished page load
//if this is not the case, up our waitFor timeout
return true;
}
waitFor(10) { !loadingSpinner.isDisplayed() }
}
答案 1 :(得分:0)
如documentation中所述,waitFor
块使用Groovy Truth知道何时等待足够长的时间。当您将导航器放入其中且当前不存在该元素时,它将等待它出现或直到经过最长等待时间。
因此,如果要等待某个元素消失,可以将其放在waitFor
中,如下所示:
// go to the page
waitFor(2) { $(".loadingspinner").displayed }
waitFor(10) { !$(".loadingspinner").displayed }
// do your assertions
如果加载微调框已经消失,waitFor
将立即返回。万一它永不消失,它将在10秒后抛出WaitTimeoutException
,这将使您的测试失败。