Protractor 量角器错误-错误:超时超过2000ms。对于异步测试和挂钩,请确保;完成();被称为;如果返回承诺,请确保它已解决

Protractor 量角器错误-错误:超时超过2000ms。对于异步测试和挂钩,请确保;完成();被称为;如果返回承诺,请确保它已解决,protractor,Protractor,我正在学习量角器,但我面临一个“承诺”错误的问题。我读了很多书,但是我仍然困在这个简单的代码中 基本上如果我加上这行 元素(by.css(gotograb_css))。单击() 将会有一个错误 错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回承诺,请确保它已解决 我是否要在此之后添加一个.then()?我试过了,即使脚本末尾有done(),错误仍然存在 我在config.js中针对量角器的测试框架是mochai 背景 1.元素css是正确的,因为我可以在S

我正在学习量角器,但我面临一个“承诺”错误的问题。我读了很多书,但是我仍然困在这个简单的代码中

基本上如果我加上这行 元素(by.css(gotograb_css))。单击()

将会有一个错误 错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回承诺,请确保它已解决

我是否要在此之后添加一个.then()?我试过了,即使脚本末尾有done(),错误仍然存在

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

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

  • 我试试这个
  • 这也行不通。同样的错误

    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 
    
      })
    

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

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

    在配置中,似乎已将全局超时设置为
    2000
    ms

    然后你尝试等待30秒,这显然比你的全局超时时间还要长


    因此,只需打开配置文件,看看情况是否如此

    如果您正在使用mocha,您可能需要禁用超时功能,向配置文件中添加如下内容:

      mochaOpts: {
        enableTimeouts: false
      },
    

    我在这里添加了超时。问题不是这个。谢谢
      mochaOpts: {
        enableTimeouts: false
      },