登录后如何测试角度视图?

时间:2015-01-29 19:11:06

标签: angularjs selenium protractor

我正在使用量角器来测试我的角度应用,其中大多数视图仅供经过身份验证的用户访问。

目前,我将登录操作放在beforeEach

beforeEach(function() {
    browser.get(site + '/account/login');
    element(by.id('Username')).sendKeys('testuser');
    element(by.id('Password')).sendKeys('letmein');
    element(by.css('[value="Log In"]')).click();
});

问题出在每个it('should....')测试中,webdriver访问登录页面并一遍又一遍地执行相同的日志。

我想必须有更好的方法来做到这一点。我们如何正确设置以便webdriver只登录一次然后执行所有it('should....')测试?

1 个答案:

答案 0 :(得分:1)

这可以通过量角器配置文件的onPrepare字段完成。

Protractor本身提供example configuration file with login

onPrepare: function() {
  browser.driver.get(env.baseUrl + '/login.html');

  browser.driver.findElement(by.id('username')).sendKeys('Jane');
  browser.driver.findElement(by.id('password')).sendKeys('1234');
  ...

}

或者,您可以使用Jasmine测试的订购事实。因此,您可以先进行it登录,而不是在每次测试之前登录。

我通常会将我的Jasmine测试组织到更大的套件中,第一次it登录,最后it签名。

明显的缺点是你的测试不是完全独立的,但作为回报,测试执行速度要快得多。您甚至可以争辩说,登录后执行多项操作比为每项操作登录和注销更为切合实际。

另一个解决方案是使用Jasmine 2.x之前和之后的所有符号(参见this answer)。这确实要求您使用最新版本的Protractor,因为1.5版本的Protractor仅适用于Jasmine 1.x。