繁体   English   中英

量角器e2e测试登录重定向

[英]Protractor e2e Tests Login Redirection

目前有部分端到端测试,输入用户名/密码并点击“登录”。

它成功地做到了,但是在“谢谢你登录”页面结束,而不是重定向到“帐户门户”或“仪表板”,就像我通过浏览器登录一样。

这个项目的新功能,但我们正在使用OAuth。

主要问题:这听起来像需要http嘲笑吗?

更多详情:

spec.js

describe('login page', function() {
    browser.driver.get('http://url.path/login');
    it('should render login page', function() {

      // Checking the current url
      var currentUrl = browser.driver.getCurrentUrl();
      expect(currentUrl).toMatch('/login');
    });
    it('should sign in', function() {

      // Find page elements
      var userNameField = browser.driver.findElement(By.id('username'));
      var userPassField = browser.driver.findElement(By.id('password'));
      var userLoginBtn  = browser.driver.findElement(By.id('loginbtn'));

      // Fill input fields
      userNameField.sendKeys('test@user.com');
      userPassField.sendKeys('1234');

      // Ensure fields contain what we've entered
      expect(userNameField.getAttribute('value')).toEqual('test@user.com');
      expect(userPassField.getAttribute('value')).toEqual('1234');

      // Click to sign in - waiting for Angular as it is manually bootstrapped.
      userLoginBtn.click().then(function() {
        browser.waitForAngular();
        expect(browser.driver.getCurrentUrl()).toMatch('/success');
      }, 10000);
    });
});

如果我快速点击测试窗口,我可以看到它成功到达“成功”页面 - 但它没有重定向到仪表板(当您通过浏览器手动登录时,它会重定向)。 如何继续此测试以保持登录并像用户一样访问仪表板?

//新项目,角度和量角器。

编辑 - 总结一下:

  • 我想量角器在/ login页面上开始测试
  • 量角器应找到并填写用户名和密码字段,然后单击“登录”
  • 量角器成功登录,查看/ thankyou页面,然后立即重定向到用户的/仪表板页面
  • 也许我错过了一步,我们是否需要在Protractor测试中手动重定向?

(当用户通过浏览器手动登录时,他们看不到/ thankyou页面 - 它是一个快速重定向到/仪表板 。量角器没有到达仪表板页面。

你的帖子缺乏信息,但我会尝试做出一个假设:

我怀疑你的“谢谢你登录”页面会在超时后重定向javascript。

因此,在您单击“登录”后,浏览器会加载“感谢您已登录”页面,并且因为.then()的第二个参数不执行任何操作,所以browser.waitForAngular()失败,因为该页面上没有角度。

你应该尝试使用一些像browser.driver.wait()这样的东西来检测网址的变化(在这里描述: https//github.com/angular/protractor/issues/610 )并触发browser.waitForAngular()之后浏览器进入/success页面。

你尝试过使用明确的等待吗?

    return browser.driver.wait(function() {
        return browser.driver.getCurrentUrl().then(function(url) {
            return /success/.test(url);
        });
    }, 10000);

你的代码就像那样:

  // Click to sign in - waiting for Angular as it is manually bootstrapped.
  userLoginBtn.click();
  return browser.driver.wait(function() {
        return browser.driver.getCurrentUrl().then(function(url) {
            return /success/.test(url);
        });
  }, 10000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM