点击<a> in a ng-repeat table. Protractor E2E-test angular</a>

时间:2014-05-11 15:14:05

标签: angularjs protractor

我有这张桌子

<table class="table">
      <thead>
      <tr>
        <th class="col-sm-5">Actions</th>
        <th class="col-sm-5">Title</th>
        <th class="col-sm-2">Saved</th>
      </tr>
      </thead>
      <tbody>
      <tr ng-repeat="calc in calculations">
        <td>
          <a class="btn btn-default btn-sm" ng-click="removeCalculation(calc.calcId)">
            <i class="fa fa-trash-o"></i>
          </a>
          <a class="btn btn-default btn-sm" href="#">
            <i class="fa fa-bar-chart-o"></i>
          </a>
          <a class="btn btn-default btn-sm" ng-href="#/user/{{user.userId}}/calculation/{{calc._id}}">
            <i class="fa fa-folder-o"></i>
          </a>
          <a id="copyCalcButton" class="btn btn-default btn-sm" ng-click="copyCalculation(calc.calcId)">
            <i class="fa fa-copy"></i>
          </a>
        </td>
        <td>{{calc.title}}</td>
        <td>{{calc.savedAt}}</td>
      </tr>
      </tbody>
    </table>

我想要我的copyCalculation功能。首先,我想检查一下我的阵列长度:

var nrOfCalc =  browser.element.all(by.repeater('calc in calculations')).count();

我想按下表格中的第一项,然后检查m y数组中是否还有一项。

如何点击表格中的第一项?

我试过这样的事情,但是我被卡住了。

var firstRowIn;
browser.findElements(protractor.By.tagName('tr')).then(function(rows){
  firstRow = rows[0];
});

一些伪代码:

firstRow...click('on the id="copyCalc")

感谢任何帮助!

3 个答案:

答案 0 :(得分:9)

试试这个:

element(by.repeater('calc in calculations').row(0)).$('#copyCalc').click()

element(by.repeater('calc in calculations').row(0)).element(by.css('#copyCalc')).click()

答案 1 :(得分:4)

安德烈的答案很接近。您只需使用get()代替row()

element(by.repeater('calc in calculations').get(0)).$('#copyCalc').click()

答案 2 :(得分:0)

browser.findElements(protractor.By.repeater('calc in calculations').then(function (table) {
    table.findElements(protractor.By.tagName('tr').then(function(rows) {
        //firstRow = rows[0];
        row[0].click();
    });
});

希望这有帮助。