【问题标题】:WebDriver wait n secondsWebDriver 等待 n 秒
【发布时间】:2021-07-10 14:26:13
【问题描述】:

我正在用 Sauce Labs 编写一些功能测试(使用 Selenium + Webdriver + Nodejs)。我的一个测试用例如下所示:

  it('Should Not Have Any Errors', function(done) {
        browser
            .get(host + '/test.live.cgi?view=pixelTest')
            .elementById('errorHolder')
            .text()
            .should.eventually.equal('[]')
            .nodeify(done);
   });

如何在加载页面和检查 errorHolder 元素的文本之间等待 10 秒?我一直在扫描 api https://github.com/admc/wd/blob/master/doc/api.md 但所有等待函数看起来都需要一个断言函数来测试给定条件是否为真。我正在尝试使用waitFor(opts, cb) -> cb(err) 方法,但我不确定如何将它与承诺联系起来。我可以这样做吗?

【问题讨论】:

    标签: node.js selenium selenium-webdriver webdriver chai


    【解决方案1】:

    在webdriver提供的sleep函数中找到了答案。现在代码如下所示:

    it('Should Not Have Any Errors', function(done) {
            browser
                .get(host + '/test.live.cgi?view=pixelTest')
                .sleep(10000)
                .elementById('errorHolder')
                .text()
                .should.eventually.equal('[]')
                .nodeify(done);
      });
    

    【讨论】:

    • sleep 是正确的答案,我从驱动程序本身使用它 await driver.sleep(2000);
    【解决方案2】:
    await driver.sleep(n * 1000)
    

    上面的代码对我有用。确保此代码位于异步函数中。

    【讨论】:

      【解决方案3】:

      你可以使用:

      .delay(10)
      

      如果您确实必须使用延迟,请考虑将其定义为变量。您将可以更好地控制整个代码中的延迟,并且如果您需要重构,将更容易搜索。

      编辑添加:

      你也可以使用:

      .then(function () {
          browser.waitForElementById('errorHolder');
      })
      

      【讨论】:

      • 没用。测试抛出错误:对象没有方法延迟
      猜你喜欢
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 2021-09-22
      • 2023-04-10
      相关资源
      最近更新 更多