在我的一项测试中,我使用CSS selector
定位元素:
element(by.css("ul.nav button"))
有多个匹配查询的元素,但是,因为我只需要第一个元素,所以我可以使用选择器。
问题是,protractor
会发出警告:
警告 - 找到多个定位器元素 By.cssSelector(" ul.nav button") - 将使用第一个结果
是否可以取消警告?换句话说,我怎样才能让protractor
知道我已经意识到问题并且不想再显示警告?
使用protractor
开发版本(直接从主分支安装)。
答案 0 :(得分:55)
请改为尝试:
element.all(by.css("ul.nav button")).first()
基本上,这告诉Protractor你已经知道有多个元素,而你只想要第一个元素(就像你在问题中所说的那样)。
答案 1 :(得分:7)
警告是有原因的。您已将测试与数据紧密联系在一起。选择器太笼统了。你应该更具体。通过说element(by.css("ul.nav button:nth-child(1)"))
或以不同的方式确定搜索范围。量角器测试不应该是测试风格或dom,它们应该是测试业务逻辑。
答案 2 :(得分:2)
不要低估 xpath。你可以用它解决成千上万的问题,包括这个
let elem = element(by.xpath('(//div//a)[3]'))
您可以指定要使用的元素数量。请记住,数字从 1 开始,而不是 js 中通常的 0
答案 3 :(得分:0)
少代码:
$$("ul.nav button").first()