我试图检测一个模块是否已经过去"陈旧"在Geb.也就是说,如果使用将抛出:
的 org.openqa.selenium.StaleElementReferenceException
以下代码似乎有效,但我觉得它过于苛刻(我只是在module
上调用任意方法(toString()
似乎是一个不错的选择)并检查它是否抛出过时的元素异常。
static boolean isStale(Module module)
{
boolean isStale = false
try {
module.toString() // arbitrary method call
} catch (StaleElementReferenceException e) {
isStale = true
}
return isStale
}
有更简洁的方法吗?
答案 0 :(得分:1)
如果您正在尝试检测页面更改,那么这些页面是任意的,那么我可能会反过来解决它 - 检测新内容而不是陈旧内容。首先,您必须找到可以在检查器中使用的某些东西(元素或元素的状态)来检测新页面是否已“加载”。然后,您将执行页面更改操作并在waitFor {}
调用内部包含一个at checker验证。这应该比您当前的方法更可靠,特别是因为Geb默认不缓存任何内容元素。