无法创建托管的Promise实例-如果函数使用async / await编写

时间:2019-06-24 13:32:05

标签: typescript promise async-await jasmine protractor

量角器失败

  

无法创建托管的Promise实例:Promise Manager具有   已被SELENIUM_PROMISE_MANAGER环境变量禁用:   未定义

如果测试中以异步/等待方式编写的任何功能。 如果函数是用promise链编写的,那么一切正常。

以下代码将因上述错误而失败:

spin_lock_irqrestore()

以下代码可以正常运行:

it('Inner', async function () {
    await browser.get(this.getRootPath());
    await asyncF(); // Fails here
});

async function asyncF (): promise.Promise<boolean> {
    const loginButton: ElementFinder = element(by.id('login-btn'));
    const res = await loginButton.isDisplayed();
    return res;
}

我希望两个代码版本都能以相同的方式工作

2 个答案:

答案 0 :(得分:1)

发现了问题。 如果使用异步/等待语法asyncF (),则应返回Promise<T>

return的情况下,我们实际上返回了promise.Promise<T>,这似乎就是为什么它没有用于异步/等待的原因。

总结:

async function asyncF (): Promise<boolean> {
    const loginButton: ElementFinder = Utils.selectElementById('login-btn');
    const res = await loginButton.isDisplayed();
    return res;
}

工作完美

答案 1 :(得分:0)

您可以尝试使用async/await

以其他方式解决承诺
async function asyncF (): promise.Promise<boolean> {
    const loginButton: ElementFinder = Utils.selectElementById('login-btn');
    const res = await loginButton.isDisplayed();
    return res;
}