【问题标题】:Protractor getText of WebElement in repeater array中继器数组中WebElement的量角器getText
【发布时间】:2013-11-14 20:51:48
【问题描述】:

在我的 html 页面中:

<ul class="phones">
              <li ng-repeat="phone in phones | filter:query | orderBy: orderProp">
                {{phone.name}} - {{phone.age}}
                <p>{{phone.snippet}}</p>
              </li>
            </ul>

在我的 e2e 测试中(返回数组中的两个元素):

            var result= ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));

            result.then(function(arr) {
                arr[0].getText().then(function(text) {
                    console.log("*** 1: "+ text);
                });

                arr[1].getText().then(function(text) {
                    console.log("*** 2: "+ text);
                })
            });

控制台正在打印所有三列,phone.name、phone.age 和 phone.sn-p。 为什么选择器不只是返回 phone.name?

它实际上返回列表“li”中的任何内容,纯文本或绑定。

【问题讨论】:

  • 应该是.column('name'),这里的例子github.com/angular/protractor/blob/master/docs/…
  • 不,没有这样做,仍然带着所有的文字回来
  • 一个问题可能是量角器试图在那里定位元素,因为phone.name 绑定的包装元素是li,它返回了那个。也许尝试使用.column('snippet') 看看是否返回了p
  • 好主意,你是对的,只选择了'sn-p'并且只返回了sn-p。那么,我需要相应地调整我的 html 吗?仅供参考...输入答案而不是评论,我会适当地对它进行投票,谢谢!

标签: angularjs protractor


【解决方案1】:

该示例尝试使用以下策略定位元素(列部分根据 cmets 固定):

protractor.By.repeater('phone in phones').column('name')

Repeater 部分匹配li 元素,然后去查找具有phone.name 绑定的元素。它的包装元素恰好是相同的li

将列部分更改为 .column('snippet') 会返回 p 元素,因为在其中找到了 phone.snippet 绑定。

相关文档/示例在此处:https://github.com/angular/protractor/blob/master/docs/getting-started.md#writing-tests

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多