如何在找不到元素而不是返回 EmptyNavigator 时使 geb 抛出错误

How to make geb throw error when element not found instead of returning EmptyNavigator

在我的页面对象中我有简单的方法

def clickSomething(byName) {    
    $("a.name", text: contains(byName)).click()
}

并且在执行过程中它没有找到所需的元素并且走得更远。

发生这种情况是因为,根据文档,$() returns EmptyNavigator if element not found。

我希望测试在尝试点击 null 元素时因某种 "ElementNotFoundException" 或 "NullPointerException" 而失败。

我也不想为返回的元素添加额外的检查(因为我需要为每个元素标识添加它)。

是否有一个优雅的解决方法?

例如对于在 "content" 中声明的元素,执行了这样的检查。但是,对于在内容块之外找到的元素,最佳做法是什么?

您遇到的问题是click() not throwing an error when called on en empty navigator has been fixed recently,将在下一版本的 Geb 中发布。

如果您需要在选择器导致导航器为空时收到错误消息,那么您可以: