【问题标题】:Element is not found while waiting. Need to know what that element is等待时未找到元素。需要知道那个元素是什么
【发布时间】:2017-02-24 23:07:54
【问题描述】:

我正在使用量角器来测试我们的一个非角度应用程序。由于同步问题,我在进行断言之前首先等待元素。我的等待代码是这样的:

var EC = protractor.ExpectedConditions;
elm = element(by.css(WebElements.locators.proDashboard.menuLogout));
browser.wait(EC.presenceOf(elm), 30000);

但是,当测试没有看到该元素时,它给了我这个错误: 错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。

Failed: Wait timed out after 10002ms

随着我的测试用例越来越多并且我正在使用页面对象,我开始遇到这个问题。有很长的测试用例,检查每个元素变得非常耗时。

有什么方法可以查看超时元素是什么?

P.S.:我尝试了使用 winston 的记录器,但它一次显示所有日志。

【问题讨论】:

  • 为一个元素等待 30 秒似乎太过分了。您是否将非角度的 ignoreSynchronization 参数设置为 true
  • 是的,我在我的 conf.js 中添加了它。我的问题是,当它超时时,它只会抛出一个超时错误,但我不知道那是哪个元素。有什么办法可以看到吗?

标签: javascript protractor automated-tests


【解决方案1】:

看起来您将jasmine.DEFAULT_TIMEOUT_INTERVAL 变量配置为每次测试只等待10002ms。您可以在 conf 文件中添加以下内容进行更改:

jasmineNodeOpts: {
    defaultTimeoutInterval: 100000
}

您还可以为每个it 测试指定超时:

it("test that waits for 100000ms", function () {
    ...
}, 100000);

【讨论】:

  • “it”测试中的特定等待值是否会覆盖defaultTimeoutInterval?另外,如果一个元素超时,我怎么知道那是什么元素?我所看到的只是一般性错误,不知道是什么因素导致的。
  • 这是因为没有特定的“元素”超时,但测试本身完成了。是的,it 中的超时会覆盖defaultTimeoutInterval
  • 感谢您的反馈!我为 100000 做了 defaultTimeoutInterval。而我对特定元素的等待仅为 10000。正如预期的那样,它引发了“失败:10003 毫秒后等待超时”的错误,我怎样才能让它出现特定的元素名称?当运行许多测试用例时,很难跟踪哪一个是错误的。有什么建议吗?
  • 我不完全确定,但我认为这可以帮助你:stackoverflow.com/questions/39792691/…
猜你喜欢
  • 1970-01-01
  • 2015-06-13
  • 2016-09-21
  • 1970-01-01
  • 2020-03-23
  • 2011-12-08
  • 2018-05-20
  • 2021-02-14
  • 2012-04-07
相关资源
最近更新 更多