Protractor 在预期条件下的超时代表什么?

标签 protractor

Protractor :版本 1.8.0

browser.wait(EC.presenceOf(element), 3000);

3秒究竟代表什么?当 3 秒过去并且找不到元素时是否会抛出错误?还是继续测试?

我用以下方法进行了测试:
element(by.id('#input')).sendKeys('foo');    
browser.wait(EC.presenceOf(element(by.xpath(BAD-LOCATOR)), 3000));
element(by.id('#input')).sendKeys('bar');

BAD-LOCATOR 只是一个引用不存在的元素的 xpath。但是在评估这条线时,测试会等待超过这个时间,直到它达到 jasmine defaultTimeoutInterval 超时(我设置为 25 秒)。既然 promise 没有在 3 秒内得到解决,为什么它不会在 3 秒内失败?我期待 wait() 失败,并且第二个 sendKeys 命令在控制流中的下一个命令执行。

因此,上面的代码块将在文本框中打印“foo”,并在下一个命令中等到 jasmine 超时出错(错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。)。我预计在 3 秒内会出现错误。 'bar' 永远不会被打印出来。

最佳答案

这是超时,我的意思是在 3 秒后如果元素不存在直到现在它会超时。
对于您收到的 Jasmine 错误,我建议您添加回调

 describe("long asynchronous specs", function() {
    beforeEach(function(done) {
      done();
    }, 1000);

也可以引用Jasmine Asynchronous Support

关于 Protractor 在预期条件下的超时代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245473/

相关文章:

node.js - Protractor E2E - 您如何管理数据库?

angularjs - 如何使用Protractor测试Google OAuth

jasmine - 右键单击 Protractor

javascript - 如何在 Protractor 中比较两个窗口之间的两个元素的值?

javascript - 如何告诉 Protractor 忽略特定的异步 Angular 任务?

linux - Angular/Jasmine : $httpBackend. expectGET 适用于 Mac,不适用于 Linux

jenkins - 在 Windows Jenkins 从节点上运行 Protractor 时出现问题

javascript - Protractor 适合规范 DRY

Protractor如何断言具有相同css类的多个元素全部显示

javascript - Protractor :无法将文本传递到文本框