【问题标题】:How to get a button in a ng-repeat list with Protractor如何使用量角器在 ng-repeat 列表中获取按钮
【发布时间】:2016-03-08 09:32:51
【问题描述】:

我正在测试(通过 e2e 测试)一个 APP。我的问题是单击由 N 个中继器组成的 ng-repeat 列表的按钮。 如何使用 btn-danger 类(下面代码行中的最后一个)获取第二行的按钮? (应用内这个类有很多按钮)。

这是一段代码:

<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>

【问题讨论】:

    标签: angularjs twitter-bootstrap protractor e2e-testing


    【解决方案1】:

    我是这样解决的:

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

    【讨论】:

    • 您也可以使用first() 代替get(0)
    • var item = element.all(by.repeater('cat in cats')).get(0);var item = element(by.repeater('cat in cats')) 相同。您是否尝试过使用这个:var item = element.all(by.repeater('cat in cats')); item.element(by.css(".btn btn-xs btn-danger").click();?我使用 Firebug 插件来帮助我使用 CSS 选择器。它被称为火路。
    【解决方案2】:

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

    使用该选择器,您可以选择您的元素(使用您已经用于该目的的任何选择器)。

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

    【讨论】:

    • 不推荐使用 xpath 定位器。它会使您的测试变得脆弱。
    • 我完全同意,有一些方法比这更好。但是,如果您需要从某个地方开始,我发现它很有用!
    猜你喜欢
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2016-03-04
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多