【问题标题】:Why am I getting Timeout error in the assertion step为什么我在断言步骤中收到超时错误
【发布时间】:2020-05-04 19:57:38
【问题描述】:

我第一次尝试这个

let url = await pa.getPageURL("Employees");
    console.log("URL "+url);

然后我尝试了这个。两者都抛出超时错误,但打印正确的 url。

it('should be able to open Employees page',async () => {
    loginPg.login();
    pa.getPageURL("Employees").then(function(url){
    console.log("URL "+url);
    expect(url).toContain("employees");
})
})

async getPageURL(pageName){
    this.menu.click()
    let url = element(by.xpath('//span[contains(.,"'+pageName+'")]')).click().then(function(){
            return browser.getCurrentUrl();
        })
        return url;
}

我正在编写一个测试,它单击菜单中的页面链接并断言 url。它工作正常并单击链接并转到正确的页面。 我还验证了 console.log 在上面的代码中正确打印了 url。但每次都因超时错误而失败。

  • 错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。 在 ontimeout (timers.js:475:11) 在 tryOnTimeout (timers.js:310:5)

我在这里缺少什么?我所有的其他测试工作正常。请帮忙!

【问题讨论】:

  • 可以在这里添加getPageUrl()方法吗?你这个方法解决了一个承诺吗?
  • async getPageURL(pageName){ this.menu.click() let url = element(by.xpath('//span[contains(.,"'+pageName+'")]')) .click().then(function(){ return browser.getCurrentUrl(); }) return url; }
  • 更新描述

标签: jasmine protractor


【解决方案1】:

尝试在期望之前使用 return 关键字。

还要确保检查 DEFAULT_TIMEOUT_INTERVAL,默认为 5 秒。尝试将其更改为 10 秒。因此,该时间足以登录然后进行实际预期。

【讨论】:

  • 增加 defaultTimeoutInterval 解决了这个问题。谢谢!
  • 能否将默认超时设置为 30 或 60 秒
  • 好的,之前我的超时间隔为 10000,现在增加到 40000,现在可以正常工作了。什么是合理的超时间隔?
  • 60 秒应该没问题
猜你喜欢
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
相关资源
最近更新 更多