量角器错误-错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;如果返回承诺,请确保其解决

时间:2019-09-28 06:36:14

标签: protractor

我正在学习量角器,但是遇到“ Promise”错误的问题。我读过Mocha testing with promises: Error: Timeout of 2000ms exceededhttps://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control-flow,但仍然停留在这个简单的代码中。

基本上,如果我添加一行 element(by.css(gotograb_css))。click();

会有错误  错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;如果返回了Promise,请确保它可以解决。

在此之后是否添加.then()?我试了一下,即使在脚本末尾使用了done(),错误仍然存​​在。

config.js中针对量角器的测试框架是mochai

背景 1.元素css是正确的,因为我可以在Selenium / Java中运行它。

  1. 我试试这个
it("testing site", (done)=> {

 .......
   done();
})

它也不起作用。同样的错误

var title_css = "h1[ng-bind='::$ctrl.primaryText']";
var gotograb_css = "a[ng-bind='::$ctrl.linkoutText']";

  it("testing site", ()=> {

    browser.get('https://www.eat24.com/');

    let EC = protractor.ExpectedConditions; // 
    let title_element = element(by.css(title_css)); 
    let condition = EC.presenceOf(title_element);
    browser.wait(condition, 30000)
    element(by.css(gotograb_css)).click(); //ERROR 

  })

3 个答案:

答案 0 :(得分:0)

我认为问题在于browser.wait函数没有得到解决。
试试这个:

    let condition = EC.presenceOf(title_element);
    return browser.wait(condition, 30000)
        .then(function () {
            return element(by.css(gotograb_css)).click();
        });        

答案 1 :(得分:0)

好像您在配置中将全局超时设置为2000毫秒。

发生的事情是您尝试等待30秒,这显然比您的全局超时还要长。

所以只需打开配置,看看是否是这种情况

答案 2 :(得分:0)

如果您正在使用Mocha,则可能需要禁用超时,将类似的内容添加到配置文件中:

  mochaOpts: {
    enableTimeouts: false
  },