【发布时间】: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