如何在Protractor测试中使用async和await?
it('test async', function(){
var value = 0;
function asyncAction() {
return browser.driver.wait(()=>true)
.then(function () {
console.log('a');
return value++;
});
}
//-Problem Area-
async function doAwait(){
await asyncAction();
return asyncAction();
}
doAwait();
protractor.promise.controlFlow().execute( () => {
console.log('b');
expect(value).toBe(2);
});
});
这里的输出结果是:
- a
- b
- a
并且在期望的时间值为1时。下面是doAwait()函数的代码:
async function doAwait(){
await asyncAction();
return asyncAction();
}
我认为这类似于:
function doAwait(){
asyncAction().then(()=>asyncAction());
}
前面的代码可以运行,但是上面的async doAwait却不能。我认为这是因为生成器打破了selenium的控制流。