我正在使用量角器来测试我的角度应用,其中大多数视图仅供经过身份验证的用户访问。
目前,我将登录操作放在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....')
测试?
答案 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。