gpt4 book ai didi

javascript - 在 Selenium Protractor 测试中使用异步和等待

转载 作者:搜寻专家 更新时间:2023-11-01 04:14:18 24 4
gpt4 key购买 nike

如何在 Protractor 测试中使用异步和等待?

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

这里的输出是

  • 一个
  • b
  • 一个

期望值是1函数 doAwait(){ 等待异步操作(); 返回异步操作();

我喜欢将其视为类似于

function doAwait(){
asyncAction().then(()=>asyncAction());
}

哪个有效,但上面的异步 doAwait 无效。我相信这是因为生成器破坏了 selenium 的 ControlFlow。

最佳答案

将此添加到 Protractor 配置中有效:

var webdriver = require.main.require('selenium-webdriver');
Promise = webdriver.promise.Promise;
Object.assign(Promise, webdriver.promise);
Promise.resolve = Promise.fulfilled;
Promise.reject = Promise.rejected;

虽然也许不是所有的 promise 都应该是托管的 promise ?

值得注意的是,另一个解决方案需要包装每个异步函数:

protractor.promise.controlFlow().execute( async () => {
await asyncAction();
return asyncAction();
});

关于javascript - 在 Selenium Protractor 测试中使用异步和等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38925394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com