无法使用cucumberjs验证页面中的元素可用性

时间:2017-06-21 12:05:06

标签: selenium-webdriver protractor cucumberjs

我试图根据页面中的元素可用性获取布尔值。当页面中存在的元素我能够 True 时,但如果元素不存在则会收到以下错误消息:

No element found using locator: By(css selector, .Welcome)
NoSuchElementError: No element found using locator: By(css selector, .Welcome)

我尝试了以下组合:

browser.findElement(by.className('Welcome')).isDisplayed()
browser.findElement(by.className('Welcome')).isPresent()
element(by.className('Welcome')).isDisplayed()
element(by.className('Welcome')).isPresent()

2 个答案:

答案 0 :(得分:0)

“当页面中存在的元素我能够获得True时,但如果元素不存在则会收到以下错误消息”

该错误是因为您正在呼叫isDisplayed()。您可以检查元素是否存在,它将返回true / false并且没有错误。但是,如果您在当前不存在的元素上调用isDisplayed(),则会获得NoSuchElementError。这仅仅意味着该元素尚不存在。如果您需要等待它出现并且可见,请使用Expected Conditions

答案 1 :(得分:0)

如果该元素并不总是存在于DOM上,而是仅在某些条件下存在,那么您始终可以通过首先获取该特定css选择器的所有元素的数组然后确保长度>来断言存在。 0(意味着至少找到一个元素):

>>> PositiveInteger.check(-3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in check
AssertionError: Must be > 0
>>> PositiveInteger.check(4.88)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in check
  File "<stdin>", line 4, in check
AssertionError: Expected int