Angularjs 量角器:查找具有匹配单元格值的表行

Angularjs 量角器:查找具有匹配单元格值的表行,angularjs,protractor,Angularjs,Protractor,是否可以使用表格单元格中应有的精确值在ng repeat中定位表格行 我知道我可以使用以下语法检索特定列: element(by.repeater('customer in vm.customers').row(0).column('customer.name') 就我而言,我还不知道索引是什么 假设我有一个典型的表声明,如下所示: <table> <tr ng-repeat="customer in customers"> <td>

是否可以使用表格单元格中应有的精确值在ng repeat中定位表格行

我知道我可以使用以下语法检索特定列:

element(by.repeater('customer in vm.customers').row(0).column('customer.name')
就我而言,我还不知道索引是什么

假设我有一个典型的表声明,如下所示:

<table>
    <tr ng-repeat="customer in customers">
        <td>
            {{customer.firstName}}
        </td>
        <td>
            {{customer.lastName}}
        </td>
    </tr>
</table>
我的用例是,在编辑表单视图上的记录之后,用户将被发送回表视图,我希望检查表视图上的值是否确实已更新


这里有什么有用的方法或方法可以帮助您吗?

您可以使用XPath通过一个调用匹配中继器和行中的文本:

element(by.xpath("//tr[@ng-repeat='customer in customers'][normalize-space(.)='Bob Smith']"))

您可以使用XPath通过单个调用匹配中继器和行中的文本:

element(by.xpath("//tr[@ng-repeat='customer in customers'][normalize-space(.)='Bob Smith']"))

看看我的量角器代码实验室。我做了一个类似的练习。代码如下:

测试结果如下所示:

it('should add user', function() {
  var name = 'test name ' + uniqueId;
  var email = 'foo' + uniqueId + '@gmail.com';
  var phone = '212-555-0000';

  userList.addUserButton.click();

  userProperties.name.sendKeys(name);
  userProperties.email.sendKeys(email);
  userProperties.phone.sendKeys(phone);
  userProperties.saveButton.click();

  expect(userList.list.getUsersByName(name)).toEqual([{
    name: name,
    email: email,
    phone: phone
  }]);
});

请参阅测试:

查看我的量角器代码实验室。我做了一个类似的练习。代码如下:

测试结果如下所示:

it('should add user', function() {
  var name = 'test name ' + uniqueId;
  var email = 'foo' + uniqueId + '@gmail.com';
  var phone = '212-555-0000';

  userList.addUserButton.click();

  userProperties.name.sendKeys(name);
  userProperties.email.sendKeys(email);
  userProperties.phone.sendKeys(phone);
  userProperties.saveButton.click();

  expect(userList.list.getUsersByName(name)).toEqual([{
    name: name,
    email: email,
    phone: phone
  }]);
});

请参阅测试:

Ok不是我所想的,我希望使用量角器定位器样式的语法可以获得更可读的内容!无论如何,出于好奇,我要试试这个。当您需要匹配某些文本时,ThanksAn XPath是一种方法。当然,您可以使用
元素(by.repeater('customer in vm.customers')
获取所有行,然后使用
.filter(e=>e.getText(v=>v=='Bob Smith'))对它们进行过滤
,但它会更昂贵,更难维护。好吧,这和我想的不太一样,我希望使用量角器定位器样式的语法能有更可读性!出于好奇,我将尝试一下。ThanksAn XPath是在需要匹配某些文本时使用的方法。当然,您可以使用
元素获得所有行(通过.repeater('vm.customers中的customer')
,然后使用
.filter(e=>e.getText(v=>v=='Bob Smith'))对其进行过滤)
,但这样做成本更高,维护难度更大。