formControlName的量角器定位器

Mar*_*nny 8 protractor angular

我正在使用基于模型的表单,我的表单如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

我想写一个量角器规范来测试登录.我就喜欢做这样的事情在我的规格如下:

    element(by.formControlName('username')).sendKeys('test@example.com');
Run Code Online (Sandbox Code Playgroud)

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

ale*_*cxe 19

你可以写一个相当简单的CSS选择器:

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

请注意,如果您经常需要这样做,您始终可以定义可重用的自定义定位器:

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

  return using.querySelectorAll('[formControlName="' + value +'"]');
});
Run Code Online (Sandbox Code Playgroud)

用法:

element(by.formControlName('username')).sendKeys('test@example.com');
Run Code Online (Sandbox Code Playgroud)

  • @MarkKenny 很棒,您应该将 `by.addLocator` 放入量角器配置中的 `onPrepare()` 函数中.. (2认同)