量角器 - 使用过滤器定位表元素

时间:2017-04-28 09:41:05

标签: javascript css xpath filter protractor

表格中有几行,我需要通过匹配以下文字来点击行的编辑链接:name1

我无法找到'编辑'这是在第一行。我尝试使用XPath和CSS找到元素,但它没有用。

这是我的HTML代码:

<tr ng-repeat="medication in modelCaseMed.medicationInfo" class="ng-scope odd" role="row">
  <td class="ng-binding">name1</td>
  <td class="ng-binding">04/06/2017</td>
  <td class="ng-binding">04/28/2017</td>
  <td class="ng-binding">12</td>
  <td class="ng-binding">Hourly</td>
  <td class="ng-binding">1</td>
  <td>
    <a href="" ng-click="addMedication(medication, 'edit')">
      <i class="fa fa-pencil-square-o"></i> Edit</a> |  
    <a href="" ng-click="deleteMedication(medication, 'Modify')">
      <i class="fa fa-trash"></i> Delete</a>
  </td>
</tr>

是否可以帮助我匹配行中的name1文本,然后点击第一行的编辑链接?

2 个答案:

答案 0 :(得分:0)

尝试以下代码,

element.all(by.repeater("medication in modelCaseMed.medicationInfo")).filter(function(_tableRow){
  return _tableRow.element(by.css("td:nth-child(1)")).getText().then(function(name){
      return name == "name1"; //replace it with the required name;
  });
}).first().element(by.css("i.fa-pencil-square-o")).click();

答案 1 :(得分:0)

另一种方法是使用文字tr获取name1,然后使用文字anchor找到Edit

var elmTR = element.all(by.cssContainingText('tr', 'name1')).last();
var elmEdit = elmTR.element(by.cssContatingText('a', 'Edit'));
elmEdit.click();