【问题标题】:protractor what does the timeout in expected conditions stand for?量角器在预期条件下的超时代表什么?
【发布时间】:2015-05-28 12:32:00
【问题描述】:

量角器:版本 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 秒)。既然承诺没有在 3 秒内得到解决,为什么它不会在 3 秒内失败?我预计 wait() 会失败,并且第二个 sendKeys 命令会在下一个控制流中执行。

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

【问题讨论】:

  • 它应该在 3 秒时超时。你确定它没有在 browser.wait 之前等待吗?
  • @hankduan,是的,我确定。如果我将错误的定位器修改为有效的定位器并重新运行,测试将继续。
  • 我刚刚尝试过它并为我工作。你能指定a)量角器的版本,b)什么是BAD-LOCATOR和c)什么是elem?这是我尝试参考的内容(请使用 http{colon}//www.angularjs.org 而不是复制缩短的版本): browser.get('angularjs.org'); var EC = protractor.ExpectedConditions; browser.wait(EC.presenceOf($('bad-locator')), 3000);
  • @hankduan。谢谢您的回复。我会更新我原来的帖子来回答你的问题。
  • 我认为browser.wait() 还接受第三个参数,它是一个字符串,对应于等待超时时将显示的错误消息。如果添加该参数,是否会显示错误消息?

标签: protractor


【解决方案1】:

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

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

也可以参考Jasmine Asynchronous Support

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 2015-02-28
    • 2016-09-15
    • 2020-10-27
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多