Nightwatch - WaitForElementVisible 和 WaitForElementPresent 的含义

kit*_*lku 5 nightwatch.js

在 e2e 中使用 Nightwatch,鉴于它们附带的名称和解释,我发现这两个命令有点令人困惑

.waitForElementVisible: 在执行任何其他命令或断言之前,等待元素在页面中可见的给定时间(以毫秒为单位)。

可见的含义是什么?

  • 页脚中的一个元素位置,需要滚动才能看到,算不算可见?
  • 这是否意味着在 DOM 中可见,即使它是display:hidden, position:relative; left:20000px;, ...?用户实际上并不可见,但 dom 基本上是存在的。
  • 什么是某些内容之上的模态视图?是否可见?

.waitForElementPresent: 在执行任何其他命令或断言之前,等待元素出现在页面中的给定时间(以毫秒为单位)。

是什么意思

  • 存在于 DOM 中而不考虑它是否可见?

这两个命令之间有任何关系/含义吗?

  • 如果元素为.waitForElementVisible返回真是否意味着.waitForElementPresent将返回真值?

很多问题,但也许对它们如何工作的解释可以解决所有这些小问题......

有时我只是收到错误,我想这可能是我对这两个命令的理解不好。

Bao*_*ran 2

定义有什么问题?你已经回答了你的问题。

页脚中的某个元素位置,需要滚动才能看到,是否算可见?

  • 不,您不需要滚动来检查它是否可见。可能您确实需要某些命令,但不需要这些可见/存在的命令。

即使是display:hidden,position:relative;是否也意味着在DOM中可见?左:20000px;,...?对于用户来说实际上不可见,但 dom 基本上是存在的。

  • 是的,它存在(意味着存在)在 DOM 中,但由于某种原因它还不可见(连接不良、属性值……)。

如果一个元素为 .waitForElementVisible 返回 true 是否意味着 .waitForElementPresent 将返回 true?

  • 是的,如果一个元素是可见的=>它就存在。

对于使用,您可以在这里查看我的示例答案,它可能会有所帮助。

登录超时

  • 这个答案和 nightwatch.js 文档一样不清楚,但我从中得到的是 | .waitForElementPresent - 表示存在于 DOM 树中 | .waitForElementVisible - 表示存在于 DOM 树中并且用户在浏览器中可见 (5认同)