我使用Nightwatch.js测试外国网站代码。我用了这个命令:
.waitForElementVisible('input[id="inputField"]', TIMEOUT)
这应该等到指定的元素可见。但是我得到了这个警告:
警告:WaitForElement找到24个选择器元素"输入[id =" inputField"]"。只会检查第一个。
我认为标签的ID是唯一的。在查找此ID时,如何获得24个元素的列表? 我现在可以做些什么来准确选择我需要的元素?
答案 0 :(得分:4)
如何在查找此ID时获取24个元素的列表?
因为人们经常无法理解id
必须是唯一的基本概念。显然,您正在测试的网站是由一个或多个人编写的。
我现在可以做些什么来准确选择我需要的元素?
根据文档,Nightwatch.js允许您使用XPath作为CSS的替代方案。使用XPath,您可以指定要定位的一组元素,例如:
.useXpath()
.waitForElementVisible('//input[@id="inputField"][1]', TIMEOUT)
...将使用第一个,[2]
将使用第二个,等等。
如果你不能通过文档中元素的索引来完成它,你需要找到它可以用来选择它的其他东西(使用CSS或XPath)。
答案 1 :(得分:0)
元素的id 应该是唯一的。但是,这并没有让开发人员能够根据自己的需要在页面上创建具有相同ID的任意数量的元素。
此外,id选择器通常指定为此input#inputField
。
答案 2 :(得分:0)
我现在可以通过选择一个明确的父元素然后选择它的子元素来解决问题;像这样的东西:
div[id="listItem_0"] > span > input[id="inputField"]