"为定位器找到了多个元素"警告

ale*_*cxe 29 testing warnings end-to-end angularjs protractor

在我的一个测试中,我使用以下命令查找元素CSS selector:

element(by.css("ul.nav button"))
Run Code Online (Sandbox Code Playgroud)

有多个匹配查询的元素,但是,因为我只需要第一个元素,所以我对选择器没问题.

问题是,protractor发出警告:

警告 - 找到定位器By.cssSelector("ul.nav button")的多个元素 - 将使用第一个结果

有可能抑制警告吗?换句话说,我怎么能protractor知道我已经意识到这个问题并且不想再显示警告了?


使用protractor开发版本(直接从master分支安装).

Isa*_*man 58

试试这个:

element.all(by.css("ul.nav button")).first()
Run Code Online (Sandbox Code Playgroud)

基本上,这告诉量角器您已经知道有多个元素,而您只想要第一个元素(就像您在问题中所说的那样).

  • 如果有的话,那就是[这里](https://github.com/angular/protractor/blob/master/docs/referenceConf.js).但是,我没有看到类似的东西,我认为原因是因为非特定的定位器会导致非常脆弱的测试. (3认同)

小智 7

警告是有原因的.您已将测试与数据紧密联系在一起.选择器过于笼统,你应该更具体.通过element(by.css("ul.nav button:nth-child(1)"))不同地说或搜索您的搜索.量角器测试不应该是测试风格或dom,它们应该是测试业务逻辑.

  • 经过长时间的考虑,我对这个答案投了反对票,因为:1)它对OP提出了指控,考虑到问题的简单性,这是完全没有根据的;2)给定的解决方案虽然可能有效,但取决于问题中未说明的假定 DOM 结构;3)答案声称给定的解决方案比OP的代码具有特定的优势,但实际上它不具有这些优势;4)在代码示例之外,答案只不过是不合逻辑和说教而已。 (4认同)