WebDriver 等待 n 秒

WebDriver wait n seconds

我正在使用 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) 方法,但我不确定如何将它与承诺联系起来。我可以这样做吗?

您可以使用:

.delay(10)

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

编辑添加:

您还可以使用:

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

在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);
  });
await driver.sleep(n * 1000)

上面的代码对我有用。确保此代码在异步函数内。