Joa*_*cao 9 javascript automated-tests angularjs protractor
我正在运行一个Angular应用程序,当测量量角器a时click(),我不知道我什么时候应该解决这个问题then().
我在Protractor API上发现了这个:
单击命令完成后将解决的承诺.
那么,我应该click().then()在每个click人中使用吗?
那么,我应该在每次点击时使用click().then()吗?
当然不.
这是不需要的,因为Protractor/WebDriverJS具有这种称为"控制流"的机制,它基本上是需要解决的承诺队列:
WebDriverJS维护一个待处理的承诺队列,称为控制流,以保持执行的有序性.
和量角器等待Angular自然而且开箱即用:
您不再需要为测试添加等待和睡眠.在网页完成待处理任务时,量角器可以自动执行测试中的下一步,因此您不必担心等待测试和网页同步.
这导致了一个非常简单的测试代码:
var elementToBePresent = element(by.css(".anotherelementclass")).isPresent();
expect(elementToBePresent.isPresent()).toBe(false);
element(by.css("#mybutton")).click();
expect(elementToBePresent.isPresent()).toBe(true);
Run Code Online (Sandbox Code Playgroud)
但有时候,如果您遇到同步/计时问题,或者您的受测试应用程序是非Angular,您可以通过click()明确解决then()并在Click回调中继续解决它:
expect(elementToBePresent.isPresent()).toBe(false);
element(by.css("#mybutton")).click().then(function () {
expect(elementToBePresent.isPresent()).toBe(true);
});
Run Code Online (Sandbox Code Playgroud)
在这些情况下还有显式等待救援,但这里没有关系.
| 归档时间: |
|
| 查看次数: |
11606 次 |
| 最近记录: |