我正在使用量角器测试为我的angularjs app编写测试。测试提取表单元素通过sendKey()输入值,并尝试单击登录按钮以查看它是否被重定向到正确的页面。
describe('Radframe registration test', function() {
it('should register a new user', function() {
browser.get('http://localhost:3000/accounts/register');
element(by.id('id_first_name')).sendKeys("Name",protractor.Key.NULL);
element(by.id('id_last_name')).sendKeys("Last name",protractor.Key.NULL);
var job_title = element(by.id('id_job_title')).sendKeys("job title",protractor.Key.NULL);
element(by.id('id_phone_number')).sendKeys("34894738044",protractor.Key.NULL);
element(by.id('id_email')).sendKeys("test@test.com",protractor.Key.NULL);
element(by.id('id_password1')).sendKeys("password",protractor.Key.NULL);
var registerButton = element(by.buttonText('Register Account'));
registerButton.click();
expect(registerButton.getText()).toBe('Register Account');
});
});
问题是我的html中有角度脏检查。我无法单击注册按钮,因为即使在通过量角器输入值之后,表单也是无效的(具有ng-pristine,ng-empty和ng-untouched类)。
<input class="form-control ng-pristine ng-untouched ng-empty ng-valid-email ng-invalid ng-invalid-required" id="id_email" name="email" ng-focus="emailFocused()" ng-model="email" ng-model-options="{debounce: { "default": 300, "blur": 0 }, updateOn: "default keyup mousedown" }" placeholder="Company Email *" required="required" type="email">.
为了能够提交表格,我应该做些什么?
答案 0 :(得分:2)
您确定要点击registerButton
吗?
var registerButton = element(by.buttonText('Register Account'));
var EC = protractor.ExpectedConditions;
browser.wait(EC.elementToBeClickable(registerButton),5000);
registerButton.click();
expect(registerButton.getText()).toBe('Register Account');
等待脏检查完成,因为在这种情况下,如果需要,DOM会更新。