如何使用量角器js单击表格中的行按钮

时间:2014-08-04 07:29:55

标签: testing jasmine protractor

我正在撰写量角器测试用例。我想点击编辑按钮。当我通过id进行检查时,找不到它。

代码:

<table class="table table-bordered table-hover">
   <thead>
       <tr>
          <th>Code</th>
          <th>Start Date</th>
          <th></th>
      </tr>
  </thead>
  <tbody>
      <tr ng-repeat="batch in batches.list">
         <td><a ui-sref="root.courses.detail.batches.assessments({ batch_id: batch.id,assessment_status: 'published'})">BID00{{batch.id}}</a></td>
         <td>{{batch.start_date}}</td>
         <td> 
             <button id="edit" type="button" class="btn btn-default btn-sm" tooltip-placement="top" tooltip="Edit" ng-controller="batchesCtrl" ng-click="edit_batch(batch.id)"><i class="glyphicon glyphicon-edit"></i></button> 
             <button type="button" id="delete(batch.id)" class="btn btn-danger btn-sm" tooltip-placement="top" tooltip="Delete" ng-click="remove_batch(1, batch.id)" confirmation-needed="Do you really want to delete this batch?"><i class="glyphicon glyphicon-trash" ></i></button>
         </td>
      </tr>
   </tbody>
</table>

我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:5)

您的示例中存在一些问题。在html中,ID在页面上应该是唯一的。因此,您无法在重复的元素中使用id。

您有几种选择。您可以通过其中一个样式来解决按钮,而另一个按钮没有像

那样
element(by.repeater('batch in batches.list').row(0)).element(by.css('button.btn-default')).click();

您也可以指定您想要的第一个按钮

element(by.repeater('batch in batches.list').row(0)).element(by.css('button:first-of-type')).click();

或者,您也可以仅使用css来处理元素。有时这比转发器更容易维护:

element(by.css('tr:first-of-type > td:last-child > button:first-of-type')).click();

答案 1 :(得分:0)

这里我没有发送延迟,所以我正在检查未加载的按钮 ptor.sleep(500);解决了我的问题。花了很多时间来确定