Nightwatch - WaitForElementVisible和WaitForElementPresent的含义

时间:2016-10-21 06:17:59

标签: nightwatch.js

使用Nightwatch for e2e,我发现这两个命令有点令人困惑给出了它们附带的名称和解释。

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

可见的含义是什么?

  • 页脚中的元素位置,您需要滚动查看它,它是否被视为可见?
  • 即使是display:hiddenposition:relative; left:20000px;,......,它是否在DOM中可见?用户实际上看不到,但dom基本上存在。
  • 在某些内容的基础上,什么是模态视图?它可见吗?

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

目前的含义是什么?

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

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

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

很多问题,但也许是关于它们如何工作的解释将解决所有这些小问题......

有时候我只是得到错误而且我认为这可能是我对这两个命令的错误理解。

2 个答案:

答案 0 :(得分:1)

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

  

页脚中的元素位置,您需要滚动查看它,它是否被视为可见?

  • 不,你不需要滚动查看它是否可见。可能你需要一些命令但不需要这些可见/现在的命令。
  

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

  • 是的,它在DOM中存在(表示存在),但由于某种原因它还不可见 (连接错误,属性值,......)。
  

如果一个元素为.waitForElementVisible返回真值,那么它意味着什么   .waitForElementPresent将返回true?

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

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

Login timeout

答案 1 :(得分:0)

基本上,一个元素可能存在(如在DOM中加载的一样)但不可见(例如,在视线之外,因此您可能需要滚动才能看到它,或者它可能是隐藏的)。

如果您要执行诸如单击元素之类的操作,那么您想使用“可见”。