browser.sleep()和browser.wait()方法有什么区别?

时间:2017-08-09 07:58:36

标签: javascript angularjs selenium protractor

面对量角器的计时问题。有时我的量角器测试用例由于网络或性能问题而失败。我用browser.sleep()解决了现有问题。后来我开始了解browser.wait()。

它们之间有什么区别,哪个更适合解决网络或性能问题。

3 个答案:

答案 0 :(得分:8)

在处理时间问题时,快速且轻松地设置"快速" browser.sleep()并继续前进。

问题是,它有一天会失败。关于要设置的睡眠超时没有黄金/通用规则,因此,在某些时候由于网络或性能或其他问题,页面加载或元素可能需要更长时间才能显示等等。此外,大多数情况下那时候,你最终会等待的比实际应该更多。

另一方面,

browser.wait()的工作方式不同。您为Protractor / WebDriverJS提供Expected Condition function以执行并等待函数的结果评估为true。一旦函数的结果评估为真或达到可配置的超时,量角器将继续执行该函数并停止。

有多个内置的预期条件,但您也可以创建和使用自定义条件(示例here)。

答案 1 :(得分:3)

<强> browser.sleep()

安排一个命令让司机在给定的时间内休眠。

<强> browser.wait()

安排命令等待条件成立或保证解决。

此功能阻止WebDriver的控制流,而不是javascript运行时。它只会延迟执行未来的webdriver命令(例如,它会导致Protractor在将未来的命令发送到selenium服务器之前等待),并且只有在启用webdriver控制流时才会执行。

文档链接 http://www.protractortest.org/#/api

答案 2 :(得分:3)

  • sleep:安排一个命令让司机在给定的时间内睡眠
  • wait:安排命令等待条件成立或保证解决。

细节参考:http://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.sleep