总是有一些测试用例会遇到茉莉花。DEFAULT_TIMEOUT_INTERVAL

时间:2019-08-26 09:10:19

标签: jasmine protractor angular6

我将使用带有茉莉花和角6的量角器创建端到端(e2e)测试。我编写了一些测试用例,涉及近10个案例。一切正常,但总是有些情况失败。而且由于茉莉花超时而失败。我已配置超时值,如下所示。但是我没有得到一致的结果。有时,一个测试用例是成功的,但是在下一次运行时,它将成功或失败。我在Google上进行了搜索,但没有找到任何有用的解决方案。

我已经定义了一些等待的常用属性

  waitForElement(element: ElementFinder){
      browser.waitForAngularEnabled(false);
      browser.wait(() => element.isPresent(), 100000, 'timeout: ');
  }

  waitForUrl(url: string){
      browser.wait(() => protractor.ExpectedConditions.urlContains(url), 100000, 'timeout')
  }

我已经定义了protractor.conf.js文件

  jasmineNodeOpts: {
        showColors: true,
        includeStackTrace: true,
        defaultTimeoutInterval: 20000,
        print: function () {
        }
    }

我遇到错误了

  - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  - Failed: stale element reference: element is not attached to the page document
    (Session info: chrome=76.0.3809.100)
    (Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.17134 x86_64)

1 个答案:

答案 0 :(得分:0)

我有解决方法:

我为单个元素查找配置了100000 ms的等待超时,整个脚本超时为20000 ms。所以我遵循以下过程:

将完整规格超时保持在下面,而不是所有元素的总和超时。我在 jasmineNodeOpts 上将 defaultTimeoutInterval 配置为大于所有测试用例超时的值之和。然后在 allScriptsTimeout 中添加一个较大的值:export.config内部的2000000。它解决了我的问题。

NB:之所以给出这个答案,是因为我认为这可能会帮助其他将面临此类问题的人。