当具有相同属性的两个元素

时间:2016-08-05 12:24:36

标签: javascript angularjs testing automation protractor

以下是两个输入框的代码,如何在具有相同属性时找到特定元素?

<input name="inputText" ng-required="field.required" ng-change="handleEdit('First name',selectedSensor[field.key],field.key)" ng-model="selectedSensor[field.key]" ng-pattern="/^[a-z]+$/i" maxlength="100" class="ng-pristine md-input ng-empty ng-invalid ng-invalid-required ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-touched"  required="required" aria-invalid="true" style="">

<input name="inputText" ng-required="field.required"  ng-change="handleEdit('Last name',selectedSensor[field.key],field.key)"  ng-model="selectedSensor[field.key]" ng-pattern="/^[a-z]+$/i"  maxlength="100" class="ng-pristine md-input ng-empty ng-invalid ng-invalid-  required ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-touched"  required="required" aria-invalid="true" style="">  

2 个答案:

答案 0 :(得分:0)

无法看到您的代码,但无论如何答案很简单。

通过element.all - http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.all

将这两个元素分配给ElementArrayFinder

然后使用get()根据ElementArrayFinder中的索引获取相应的元素 - http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.get

例如:

var userNavLinks = element.all(by.css('li.navbar-item'));
var targetLink = userNavLinks.get(2);
expect(targetLink.getText()).toEqual('My Link');

您也可以在一行中执行此操作: element.all(by.css('li.navbar-item')).get(1).click()等。

答案 1 :(得分:0)

如果您可以控制正在测试的应用,请考虑添加有意义的ID或类或自定义属性,以便唯一标识元素以简化e2e测试

鉴于我们目前的情况,您可以依赖ng-change属性:

var firstName = $('input[ng-change*="First name"]');
var lastName = $('input[ng-change*="Last name"]');