【发布时间】:2018-03-20 23:57:15
【问题描述】:
我想在 Protractor 测试中将 appart 从 selenium 控制流中移出。
以下是我到目前为止所经历的步骤和问题:
1.逐个测试禁用它
我的第一个想法是使用 SELENIUM_PROMISE_MANAGER 来从 selenium 承诺转移到异步/等待代码。
不幸的是,为了顺利进行迁移,我发现无法将一项测试放在SELENIUM_PROMISE_MANAGER=0 上,而将其他测试放在SELENIUM_PROMISE_MANAGER=1 上。
2。保留它,但也要使用 async/await
所以我想到了一个使用 async/await 的代码,同时保留 SELENIUM_PROMISE_MANAGER=1。
可惜好像不兼容:https://github.com/angular/protractor/tree/master/exampleTypescript/asyncAwait
Selenium 方面没有关于此类问题的任何内容,所以我想知道这是一个建议还是一个真正的问题它总是失败。
3.覆盖 promise.USE_PROMISE_MANAGER
使用 protractor.promise.USE_PROMISE_MANAGER=false 对我不起作用(在 beforeEach 中)。
4.在异步代码上调用控制流
protractor.promise.controlFlow().execute(/* my async code*/);
对我来说,它似乎混合 async/await 来控制流程......
什么是正确的策略?
我想知道,在 Protractor 测试中转移到 async/await 的正确策略是什么?
我不想在一次更改中将所有内容都放在 async/await 中,而是将更改分散到多个小更改中
【问题讨论】:
-
阅读full thread here about the deprecate issue 似乎很简单。您需要通过命令行启用 async/await(检查 2 月 4 日)。那么,您为什么认为它不兼容,您会遇到什么错误?
-
我的问题是量角器指南明确表示“但是,您不能混合使用 async/await 和控制流”,我还没有找到任何方法仅将部分测试移动到异步/await 而不是其他人。
标签: angularjs selenium async-await protractor end-to-end