面对量角器的计时问题。有时我的量角器测试用例由于网络或性能问题而失败。我用browser.sleep()解决了现有问题。后来我开始了解browser.wait()。
它们之间有什么区别,哪个更适合解决网络或性能问题。
答案 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控制流时才会执行。
答案 2 :(得分:3)
细节参考:http://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.sleep