【问题标题】:Assert an element is not present in the dom using GEB使用 GEB 断言 dom 中不存在元素
【发布时间】:2018-03-02 09:36:38
【问题描述】:

我正在尝试根据谁登录来验证页面。某些用户具有更高的安全性,并且会在页面上看到更多项目。当安全性较低的用户登录时,他们将看不到选项。我需要验证页面上不存在这些选项。

我有一个基于用户安全性显示的选项的页面对象

testObject {$("#test")}

我尝试过使用 isDisplayed()

boolean hidden =  testObject.isDisplayed()
assert !hidden

但我一直收到一个错误提示

geb.error.RequiredPageContentNotPresent:需要的页面内容 geb.navigator.EmptyNavigator' 不存在

错误消息是我要验证的。该对象不存在,我需要验证它是真实的并通过测试。

【问题讨论】:

  • 即使是页面对象也需要检查是否为空
  • 那没必要,比尔。我的回答解释了原因。

标签: selenium geb


【解决方案1】:

您想为您的内容元素使用required 选项。

如果页面是动态的,也许您还想等待一段时间,然后让 Geb 确定元素为空。检查元素是否不存在可能很棘手,因为它们可能只是因为动态元素尚未完成加载而通过。

testObject(required: false, wait: 2) { $("#test") }

在您的 Geb 测试中,您只需这样做(不需要辅助方法):

given:
def page = to MyPage

expect:
page.testObject.empty

【讨论】:

  • 如果我运行 page.TestObject.empty。它返回假。我需要将 required 设置为 false,然后使用 isDisplayed 才能让我的测试正常工作。
  • 那么您可能不是在测试正确的对象,而是在您的 DOM 中始终存在的一个空容器。我测试了我的代码,它确实如我的答案所示工作。
猜你喜欢
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多