请向我解释,这三种代码变体之间有什么区别?他们都工作得很好。
或者第一和第二变体是相同的? 关于第三个问题:我读到“ browser.sleep()”最好避免在代码中使用,因为它会导致测试工作不稳定。是真的吗?
帮助我理解。
谢谢。
var MenuSigninButton = $('button.btn');
var LoginDropdownForm = element(by.id('loginForm'));
MenuSigninButton.click();
browser.wait(EC.visibilityOf(LoginDropdownForm));
和
MenuSigninButton.click();
browser.wait (function () {
return LoginDropdownForm.isDisplayed()
});
和
MenuSigninButton.click();
browser.sleep(3000);
expect(LoginDropdownForm.isDisplayed()).toBe(true);
答案 0 :(得分:0)
首先,是的,您应尽可能避免使用driver.sleep()。为什么?
好吧,如果您开始使用它,那是因为您正在等待屏幕上出现一些东西以便继续执行测试。 好吧,您不知道该“东西”要持续多长时间。
也许有时您进行硬编码的时间太短,并且测试将失败,并给出假的结果。
也许时间太长,测试将持续太多,您可以节省时间。
有时,以上两点可能会发生,具体取决于时间,环境的总负荷,...
第二个问题:
使用 browser.wait()时,必须通过条件来停止等待。 可以是将来要解决的 Promise (示例中未涉及),可以是条件(第一个示例),也可以是必须执行的函数(第二个)例如)。
第三个示例有点不同:
使用 expect 方法时,您将明确编写一个必须通过以通过测试的条件。因此,expect直到解决其中的Promise时才结束。