我需要使用'then'创建一系列selenium命令,但我不知道在这种情况下如何从asserts返回promise。我一直收到这个警告:
(node:18772)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):AssertionError [ERR_ASSERTION]:'英雄联盟'=='Reddit上的Dota 2'
(node:18772)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
我所说的例子:
var assert = require('assert');
var webdriver = require('selenium-webdriver');
it('should do something with promises', function(done) {
this.timeout(300000);
driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.firefox()).
build();
driver.get("https://www.reddit.com/r/leagueoflegends/").
then( () => driver.getTitle()).
then( (title) => assert.equal(title,"Dota 2 on Reddit")).
then(() => driver.quit()).
then(() => done());
});
答案 0 :(得分:0)
你在某个地方遇到了一个错误,并没有在任何地方处理。一个快速简单的解决方法是添加
.catch(e => done(e))
到上一个.then(...)
的结尾。这将捕获任何.then(...)
的任何错误,您可以适当地处理它。如果您致电done()
并将其传递给任何参数(如done(e)
),则Mocha会认为测试失败。如果失败,你总是可以这样调用assert.fail
。
.catch(e => assert.fail(e, 'expected value', 'Unknown description here'))