之间的区别是:1. browser.wait(EC ...)2. browser.wait(function(){})3. browser.sleep()

时间:2018-11-07 13:12:06

标签: jasmine protractor automated-tests

请向我解释,这三种代码变体之间有什么区别?他们都工作得很好。

或者第一和第二变体是相同的? 关于第三个问题:我读到“ 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);

1 个答案:

答案 0 :(得分:0)

首先,是的,您应尽可能避免使用driver.sleep()。为什么?

好吧,如果您开始使用它,那是因为您正在等待屏幕上出现一些东西以便继续执行测试。 好吧,您不知道该“东西”要持续多长时间。

  • 也许有时您进行硬编码的时间太短,并且测试将失败,并给出假的结果。

  • 也许时间太长,测试将持续太多,您可以节省时间。

  • 有时,以上两点可能会发生,具体取决于时间,环境的总负荷,...

第二个问题:

使用 browser.wait()时,必须通过条件来停止等待。 可以是将来要解决的 Promise (示例中未涉及),可以是条件(第一个示例),也可以是必须执行的函数(第二个)例如)。

第三个示例有点不同:

使用 expect 方法时,您将明确编写一个必须通过以通过测试的条件。因此,expect直到解决其中的Promise时才结束。