如何检测元素在Geb中是否“陈旧”?

时间:2014-06-04 20:22:37

标签: groovy webdriver geb

我试图检测一个模块是否已经过去"陈旧"在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
}

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您正在尝试检测页面更改,那么这些页面是任意的,那么我可能会反过来解决它 - 检测新内容而不是陈旧内容。首先,您必须找到可以在检查器中使用的某些东西(元素或元素的状态)来检测新页面是否已“加载”。然后,您将执行页面更改操作并在waitFor {}调用内部包含一个at checker验证。这应该比您当前的方法更可靠,特别是因为Geb默认不缓存任何内容元素。