【问题标题】:Protractor - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL量角器 - 错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调
【发布时间】:2021-03-31 18:37:27
【问题描述】:

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

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

这是我的规范文件。

让 common=require('./Objects/common.js') describe('云测试', function() {

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 版本。

【问题讨论】:

标签: jasmine protractor jasmine-node


【解决方案1】:

你试过异步测试吗?有时甚至后端响应或浏览器性能也可能会影响测试用例。

参考: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;
    });
  });

【讨论】:

    【解决方案2】:

    您的回调晚于您的 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();
    
    });
    

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 2016-04-21
      • 2019-01-07
      相关资源
      最近更新 更多