首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1. browser.wait(EC...) 2. browser.wait () {}) 3. browser.sleep()

1. browser.wait(EC...) 2. browser.wait () {}) 3. browser.sleep()
EN

Stack Overflow用户
提问于 2018-11-07 21:12:06
回答 1查看 176关注 0票数 1

请解释一下,这三种不同的代码有什么不同?它们都工作得很好。

或者第一个和第二个变体是相同的?第三个呢:我读到在代码中最好避免使用"browser.sleep()“,因为它会导致测试工作中的不稳定性。是真的吗?

帮我理解一下。

谢谢。

代码语言:javascript
复制
var MenuSigninButton = $('button.btn');
var LoginDropdownForm = element(by.id('loginForm'));

MenuSigninButton.click();
    browser.wait(EC.visibilityOf(LoginDropdownForm));

代码语言:javascript
复制
MenuSigninButton.click();
    browser.wait (function () {
        return LoginDropdownForm.isDisplayed()
    });

代码语言:javascript
复制
MenuSigninButton.click();
browser.sleep(3000);
    expect(LoginDropdownForm.isDisplayed()).toBe(true);
EN

回答 1

Stack Overflow用户

发布于 2018-11-07 23:50:27

首先,是的,只要能使用,就应该避免使用driver.sleep()。为什么?

好吧,如果你开始使用,那是因为你在等待一些东西出现在屏幕上,以便继续执行测试。嗯,你不知道这个“东西”会持续多久才会出现。

  • 可能有时候你硬编码的时间太短,测试会失败,给出一个假的结果。
  • 可能,时间太长,测试会持续太长时间,你可以保存上面的两点,这取决于时间,环境的整体负载,...

第二个问题:

当您使用browser.wait()时,您必须传递一个条件来停止等待。它可以是将来解决的承诺(示例中没有涉及),可以是条件(第一个示例),也可以是一个必须执行的函数(第二个示例)。

的第三个示例略有不同:

使用expect方法时,您显式编写了一个条件,该条件必须通过才能通过测试。因此,expect不会结束,直到它内部的Promise得到解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53190170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档