WebDriver 等待 n 秒

问题描述 投票:0回答:4

我正在使用 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
4个回答
15
投票

在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);
  });

14
投票
await driver.sleep(n * 1000)

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


3
投票

您可以使用:

.delay(10)

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

编辑添加:

您还可以使用:

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

0
投票

你可以试试这个:

browser.pause(10000)

© www.soinside.com 2019 - 2024. All rights reserved.