量角器不会等待重定向

时间:2015-12-16 11:37:32

标签: javascript angularjs protractor angularjs-e2e e2e-testing

我已经使用Jasmine编写了用于登录用户的量角器代码。不幸的是,在转到root url之后会进行重定向,这需要花费相当长的时间(约5秒),我无法让量角器等待它。我已经尝试browser.wait,我尝试过使用承诺,我已尝试使用this blogpost,但没有做到。它仍然不会等待。登录页面是Keycloak服务器的页面,这就是我使用driver.findElement而不是element的原因。这是我目前的代码:

describe('my app', function() {
  it('login', function() {
    var driver = browser.driver;
    browser.get('/');
    console.log('get');
    driver.findElement(by.id('username')).isPresent().then(function() {
      console.log('waited');
      driver.findElement(by.id('username')).sendKeys("test");
      driver.findElement(by.id('password')).sendKeys("test");
      driver.findElement(by.id('kc-login')).click();
      driver.findElement(by.css('.page-header')).isPresent().then(function() {
        console.log('ok');
        expect(browser.getLocationAbsUrl()).toMatch("/test");
      });
    });
  });
});

你知道我能做些什么让它发挥作用吗?我用这种种子开始了量角器项目:https://github.com/angular/angular-seed

1 个答案:

答案 0 :(得分:3)

您需要关闭同步

var EC = protractor.ExpectedConditions;

describe('my app', function() {

  beforeEach(function () {
      browser.ignoreSynchronization = true;
      browser.get('/');
  });

  it('login', function() {
    var username = element(by.id('username'));
    browser.wait(EC.visibilityOf(username), 10000);

    username.sendKeys("test");
    element(by.id('password')).sendKeys("test");
    element(by.id('kc-login')).click();

    var header = element(by.css('.page-header'));

    browser.wait(EC.visibilityOf(header), 10000).then(function () {
        console.log('logged in');
    });
  });
});

请注意,我还更新了测试:切换回elementbrowser,添加browser.wait()内置预期条件