如何在找不到元素而不是返回 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 中发布。
如果您需要在选择器导致导航器为空时收到错误消息,那么您可以:
- 将您的选择器包裹在 content definition with the
required
template option 中,设置为 true,这是默认值
- 在您的导航器上调用
verifyNotEmpty()
在我的页面对象中我有简单的方法
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 中发布。
如果您需要在选择器导致导航器为空时收到错误消息,那么您可以:
- 将您的选择器包裹在 content definition with the
required
template option 中,设置为 true,这是默认值 - 在您的导航器上调用
verifyNotEmpty()