【问题标题】:How to find and click a table element by text using Protractor?如何使用量角器通过文本查找和单击表格元素?
【发布时间】:2015-06-02 11:35:33
【问题描述】:
<tr id="item" ng-repeat="item in itemList>
   <td id="code" ng-repeat="column in columns">Some Text</td>
</tr>

我看到了一些其他类似的问题,但我还不能解决它。 这就是我到目前为止所尝试的:

element.all(by.repeater('column in columns')).findElement(by.id('code')).getText('Some Text').click();

编辑:

<tr ng-repeat="item in items>
<td>{{item.name}}</td>
<td>{{item.description}}</td>
</tr>

结果:

<tr>
<td>Some Name</td>
<td>Some Text</td>
</tr>
<tr>
<td>More Name</td>
<td>More Text</td>
</tr>

等等等等

【问题讨论】:

  • 我认为 protractor 在您即将发出$http 请求时出现。
  • 将在循环中获得相同的 id,尝试 并使用 findElement(by.id('row_0')) 先点击排。如果您在页面上拥有唯一的“id”,则无需在之前选择 by.repeater('column in columns')。我认为

标签: javascript angularjs selenium protractor end-to-end


【解决方案1】:

你需要filter()想要的元素:

var columns = element.all(by.repeater('column in columns'));
columns.filter(function (elm) {
    return elm.getText().then(function (text) {
        return text == 'Some Text';
    });
}).first().click();

【讨论】:

  • 谢谢,量角器说不能点击未定义,所以我推测量角器没有找到任何元素,但是有我写的文字的元素
  • 我在第 1 篇文章中做了一些更改,以便在更简单的示例中正确处理
猜你喜欢
  • 2015-11-08
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2018-06-12
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多