如何使用 Protractor 在 ng-repeat 列表中获取按钮

How to get a button in a ng-repeat list with Protractor

我正在测试(使用端到端测试)一个应用程序。我的问题是点击由 N 个中继器组成的 ng-repeat 列表的按钮。 如何使用 class btn-danger(下面代码行中的最后一个)获取第二行的按钮? (应用程序中有很多带有此 class 的按钮)。

这是代码的一部分:

<tr ng-repeat="cat in cats" ng-class="expression" class="ng-scope danger">
    <td class="ng-binding">Info 1</td>
    <td class="ng-binding">Info 2</td>
    <td>
     <span class="glyphicon glyphicon-ok ng-hide" ng-show="function()"></span>
    </td>
    <td>
      <button class="btn btn-xs btn-danger" ng-class="expression2" popover-html="infoes" popover-trigger="click">
        <span class="glyphicon glyphicon-search" <="" span=""></span>
      </button>
    </td>
    <td>
        <button class="btn btn-xs btn-danger" ng-show="function2()" ng-click="function3()" ng-disabled="function4()">
            <span class="glyphicon glyphicon-x"></span>
        </button>
    </td>
</tr>

如果您可以使用 chrome 访问您的页面,您可以检查该元素并获取他的 select 或他的 xpath :

使用那个 select 或者你可以 select 你的元素(使用任何 select 或者你已经用于那个目的)。

如果您只需要第二个元素 select 它,您将获得的 xpath 将始终指向第二个元素。希望对您有所帮助!

我是这样解决的:

var item = element.all(by.repeater('cat in cats')).get(0);
    item.element(by.css('button[ng-click="function3()"')).click();