我正在使用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)
方法,但我不确定如何将它与承诺链接起来。我可以这样做吗?
答案 0 :(得分:11)
在webdriver提供的睡眠功能中找到答案。现在代码看起来像这样:
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);
});
答案 1 :(得分:3)
您可以使用:
.delay(10)
如果您确实需要使用延迟,请考虑将其定义为变量。您可以更好地控制代码中的延迟,如果需要重构,搜索将更容易。
编辑添加:
你也可以使用:
.then(function () {
browser.waitForElementById('errorHolder');
})
答案 2 :(得分:2)
await driver.sleep(n * 1000)
上面的代码对我有用。确保此代码位于异步函数内。