如何链接`element`和`element.all`?

时间:2016-04-18 13:29:15

标签: javascript selenium protractor

问题与此问题"More than one element found for locator" warning非常相似:我有ng-repeat,其中有两个div s,其上有ng-if,所以只有一个div显示{1}}。 div中的每个ng-repeat都具有相同的等级login__cell-link

我需要检查此div中的值,因此我使用

选择块
element.all(by.repeater('item in array')).then( allElements => {
  allElements[i].element(by.className('login__cell-link')).getText();
});

问题是警告:

  

警告 - 为定位器By(css选择器,.login__cell-link)找到多个元素 - 将使用第一个结果

此答案https://stackoverflow.com/a/28464809/4753661表示要使用:element.all(by.css("ul.nav button")).first()

但我得到错误:

  

[TypeError:allElements [i] .element.all不是函数]

如何链接elementelement.all,或者在这种情况下是否有更好的解决方案来检查一个div?谢谢。

1 个答案:

答案 0 :(得分:10)

链接时使用.all()而不是.element.all()

allElements[i].all(by.className('login__cell-link')).first().getText();

顺便说一下,您不需要在此明确解决承诺,并且可以将其链接到一起:

element
  .all(by.repeater('item in array'))
  .get(i)
  .all(by.className('login__cell-link'))
  .first()
  .getText();

无耻的自我推销:如果您想尽早发现此类错误,可以将ESLint静态代码分析工具与eslint-plugin-protractor correct-chaining rule一起使用。< / p>

相关问题