formControlName的量角器定位器

时间:2016-10-07 13:10:05

标签: angular protractor

我正在使用基于模型的表单,其形式如下:

<form [formGroup]="form" (ngSubmit)="onSubmit(form.value)">
  <input type="text" formControlName="username">
  <input type="password" formControlName="password">
  <button type="submit" [disabled]="!form.valid">Submit</button>
</form>

我想写一个量角器规范来测试登录。我会喜欢在我的规范中执行以下操作:

    element(by.formControlName('username')).sendKeys('test@example.com');

这显然不起作用,有没有办法通过表单控件进行定位,或者我是否因为必须在输入字段中放置类或ID这一事实?

1 个答案:

答案 0 :(得分:16)

您可以编写一个相当简单的 CSS选择器

element(by.css("input[formControlName=username]")).sendKeys('test@example.com');

请注意,如果您需要经常这样做,您可以随时定义可重复使用的custom locator

by.addLocator('formControlName', function(value, opt_parentElement, opt_rootSelector) {
  var using = opt_parentElement || document;

  return using.querySelectorAll('[formControlName="' + value +'"]');
});

用法:

element(by.formControlName('username')).sendKeys('test@example.com');