量角器 - 错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调

时间:2020-12-22 01:41:54

标签: jasmine protractor jasmine-node

我的量角器测试失败并出现以下错误

错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。

这是我的规范文件。

let common=require('./Objects/common.js') 描述('云测试',函数(){

it('Cloudtest1', function() {

  let EC=protractor.ExpectedConditions;    
  browser.waitForAngularEnabled(false);

  browser.get(common.loginURL);
  common.txtUserName.sendKeys('aqaasdas@hkm.com');
  common.txtPword.sendKeys('asdasd@#$');
  common.btnLogin.click();

   
  browser.wait(EC.visibilityOf(element(by.xpath("//a[@class='btn btn-success']"))));
 
  element(by.xpath("//a[@class='btn btn-success']")).click();
  
  common.btnCrtPcr.click();

  

});

});

感谢任何帮助,我尝试回答此处发布的类似问题,但对我没有任何帮助。我正在运行最新的 Protractor 和 Chrome 版本。

2 个答案:

答案 0 :(得分:0)

您是否尝试过异步测试?有时甚至后端响应或浏览器性能也会影响测试用例。

参考:https://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support

describe("Your module", function() {
    var originalTimeout;
    beforeEach(function() {
      originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
      jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
    });

    it("takes a long time", function(done) {
        let EC=protractor.ExpectedConditions;    
        browser.waitForAngularEnabled(false);

        browser.get(common.loginURL);
        common.txtUserName.sendKeys('aqaasdas@hkm.com');
        common.txtPword.sendKeys('asdasd@#$');
        common.btnLogin.click();
   
        browser.wait(EC.visibilityOf(element(by.xpath("//a[@class='btn btn-success']"))));

        element(by.xpath("//a[@class='btn btn-success']")).click();
        common.btnCrtPcr.click();
    });

    afterEach(function() {
      jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
    });
  });

答案 1 :(得分:0)

您的回调晚于 Jasmins 默认超时时间。即使您使用了预期条件,您也可能希望在 it 块中使用 async/await。

it('Cloudtest1', async () => {

  let EC=protractor.ExpectedConditions;    
  browser.waitForAngularEnabled(false);

  browser.get(common.loginURL);
  await  common.txtUserName.sendKeys('aqaasdas@hkm.com');
  await  common.txtPword.sendKeys('asdasd@#$');
  await  common.btnLogin.click();

   
  browser.wait(EC.visibilityOf(element(by.xpath("//a[@class='btn btn-success']"))));
 
  element(by.xpath("//a[@class='btn btn-success']")).click();
  
  await common.btnCrtPcr.click();

});

建议:在页面对象中或在每个/全部之前执行操作。将它块用于expect 语句。 例子:

describe('When user logged Into account ', () => {
    beforeAll(async () => {
      await browser.waitForAngularEnabled(false);
      await loginPO.login();
      
    });
    it('Browser title should be displayed.', async () => {
      expect(await browser.getTitle()).toBe('test');
    });
  }); 
相关问题