【问题标题】:Protractor synchrozation - timeout量角器同步 - 超时
【发布时间】:2015-06-01 19:29:06
【问题描述】:

我正在编写简单的量角器测试四个我们的应用程序:

  • 登录页面没有 angularhs - 工作正常
  • 所有其他页面都使用 angularjs

当我想编写 angularhs 测试时 - 我收到了这个错误(在this 安装之后):

Timed out waiting for Protractor to synchronize with the page after 40002ms. Please see https://github.com/angular/protractor/blob/master/docs/faq.md

配置:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['login-spec.js'],
  baseUrl: 'https:/xyz/',
  allScriptsTimeout: 40000,

  capabilities: {
    'browserName': 'firefox'
  }
}

还有我的规格:

describe('Login #1', function() {
  // BEFORE LOGIN
  it('should pass to next login step', function() {
    browser.driver.get('https://xyz/login');
    browser.driver.findElement(by.css(".factorFirst > [name='username']:first-child")).sendKeys('123456');

    .... other login stuff

  }, 90000);

  // AFTER LOGIN TEST
  it('Simple Angular Test', function() {
    browser.get('/page');

    element(by.model('payment.userSpecified.message')).sendKeys(1);

  }, 45000);


});

我们的body 元素属性中没有ng-app。这会是个问题吗?

【问题讨论】:

    标签: javascript angularjs testing protractor end-to-end


    【解决方案1】:

    您需要让protractor 知道登录页面是非角的,它不需要等待角“安定下来”。登录前将ignoreSynchronization设置为true,登录后设置回false

    describe('Login #1', function() {
    
      afterEach(function () {
        browser.ignoreSynchronization = false;
      });
    
      it('should pass to next login step', function() {
        browser.ignoreSynchronization = true;
    
        browser.driver.get('https://xyz/login');
        browser.driver.findElement(by.css(".factorFirst > [name='username']:first-child")).sendKeys('123456');
      }, 90000);
    
      it('Simple Angular Test', function() {
        browser.get('/page');
    
        element(by.model('payment.userSpecified.message')).sendKeys(1);
    
      }, 45000);
    });
    

    【讨论】:

    • 感谢您的回复。当我设置'browser.ignoreSynchronization = false;'在 ANGULAR 测试中,我实际上得到了超时错误。当我将其设置为 TRUE -> 我可以将密钥发送到模型。但是我必须处理未来的对象。
    • @Mato.Duris 是的,这就是我要说的——当您在非角度页面上时,您需要将 ignoreSynchronization 设置为 true。之后,当您进入一个角度页面时 - 将其设置回默认的 false 值。你试过我提供的代码吗?谢谢。
    • 这有效:pastebin.com/uYRrB7ks ...当我删除'browser.ignoreSynchronization = true;' -> 我收到超时错误。 (根据您的推荐,我添加了 afterEach 函数)。它很奇怪。测试有效,但我需要处理未来的对象有什么缺点。
    • @Mato.Duris 如果我错了,请纠正我。我提出的代码有帮助,但您不确定它是否可靠,或者不明白它有什么帮助?我可以添加更多详细信息,说明为什么我认为您应该以这种方式解决它。 Lmk。
    • 是的帮助:-) 但我必须在 ANGULAR 测试中设置“browser.ignoreSynchronization = true;'”。我不明白 - 为什么我必须将其设置为 TRUE ?我目前的工作测试:pastebin.com/LdGDCJMa
    猜你喜欢
    • 2015-10-05
    • 2023-03-12
    • 2014-11-16
    • 1970-01-01
    • 2016-05-13
    • 2014-05-16
    • 1970-01-01
    • 2023-04-02
    • 2015-05-06
    相关资源
    最近更新 更多