我在与动态网页交互时遇到问题,即静态内容在一段时间后变得无效。通常,我第一次去页面时保存页面对象:
to StartPage
def startPage = at StartPage
稍后访问页面对象时,静态内容可能会变为无效。我想,当我第一次去页面时,Geb正在构建页面的DOM树。我是对的吗?!
如何触发刷新DOM树以便覆盖静态内容?
答案 0 :(得分:0)
以下是一些导致上述问题的代码段:
<强> PkPortalWizardInitialPagePopup 强>:
static at = {
waitFor { inputStartAssistant.displayed }
}
static content = {
inputStartAssistant { $("input#BtnNext", nicetitle: "Assistent starten") }
}
def cancelAssistant() {
waitForWithSleep { buttonCancel.enabled }
buttonCancel.click()
}
def submitCancellingAssistant() {
waitForWithSleep { buttonSubmit.enabled }
buttonSubmit.click()
}
<强> PkPortalEpbListPage 强>:
static at = {
waitFor { inboxLink.isDisplayed() }
}
static content = {
inboxLink { $("a.ctxLink", text: "Posteingang") }
}
测试代码:
def portalAssistant = at PkPortalWizardInitialPagePopup
portalAssistant.cancelAssistant()
portalAssistant.submitCancellingAssistant()
def portalEpostLetterListPage = at PkPortalEpbListPage --> ERROR
错误强>: geb.waiting.WaitTimeoutException:条件未在60.0秒内传递(因异常而失败)
取消登录向导弹出窗口会将用户定向到PkPortalEpbListPage,但是at检查器会导致上述错误。
答案 1 :(得分:0)
对Geb导航仪进行微小修改可以解决问题:
inboxLink { $("a.ctxLink", text: contains("Posteingang")) }
不知道为什么因为文本不包含任何空格。 Geb魔术?