javascript - 如何在中继器中定位并单击 ng-click 按钮

标签 javascript angularjs selenium protractor repeater

我需要使用 Selenium WebDriver 和 Protractor 测试 AngularJS 网页。

要测试的 HTML 片段:

<tr ng-repeat="item in items" class="ng-scope">
    <td class="ng-binding">
        Item1
    </td>
    <td class="ng-binding">
        description
    </td>
    <td class="ng-binding">
        1234
    </td>
    <td>
        <div ng-click="AddItem(item.id)" class="btn">Add Item</div>
    </td>
</tr>

<tr ng-repeat="item in items" class="ng-scope">
    <td class="ng-binding">
        Item2
    </td>
    <td class="ng-binding">
        description
    </td>
    <td class="ng-binding">
        1235
    </td>
    <td>
        <div ng-click="AddItem(item.id)" class="btn">Add Item</div>
    </td>
</tr>

看起来像这样:

screenshot of the html angular page

我已经浏览了 youtube 上的文档、教程并进行了谷歌搜索,但我仍然不明白如何找到并单击具有特定项目 ID 的特定项目的“添加项目”。

你能给我解释一下这是怎么做到的吗?

最佳答案

您要查找的特定 ID 不会出现在 DOM 中,这意味着您无法使用该方法定位元素。

以下是我个人使用的代码:

element.all(by.repeater('item in items')).filter(function(row){
 return row.all(by.tagName('td')).first().getText().then(function(val){
     return val === "Item1" //this can be your per your wish
  })
}).first().$('[ng-click="AddItem(item.id)"]').click();

关于javascript - 如何在中继器中定位并单击 ng-click 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40452530/

相关文章:

JavaScript 方程求解器库

javascript - 可以在 Firefox 中更改 "Saved Password"样式吗?

javascript - 如何从 $scope.$on 返回一些值到 $scope.$emit

javascript - 动态推送到 $q.all() promise 数组

html - 如何从样式元素中获取值?

python Selenium : No such file or directory when loading Firefox Profile

python - 使用 Selenium 和 Python 进行跨浏览器测试

javascript - 如何检测函数是用javascript调用的

AngularJS : Custom filters and ng-repeat

angularjs - 使用 angularjs 创建一个新指令