phpunit - 使用 XPath 获取第 N 个元素 - 当 element[N] 失败时

已经有一些关于 XPath 中第 N 个元素的讨论:

XPath query to get nth instance of an element

Get Nth child of a node using xpath

XPath and PHP: Parse from the nth instance of an element

我正在使用 Selenium 和 PHPUnit 进行功能测试。我的问题是在一个大表单的页面上,第 N 个选择器不起作用。我有 80 个输入字段(使用 Selenium 的 getXpathCount('//input') 调用来获取确切数字) - 我想遍历这 80 个字段并输入一些文本。
我已经尝试过但不起作用(N 是索引变量):

//input[N]
//input[position()=N]
input[N]
(//input)[N]
(.//input)[N]
css=input:nth-of-type(N)

以及以上所有的混合物。它通常会触发一个异常,说:元素未在 N = 2 处找到。我尝试了几种用于浏览器的 XPath 工具,因此像 Chrome 中的 XPathEvaluator 这样的 native 扩展 - 几乎所有都给了我正确的结果。所以看起来 Seleniums XPath 解析器的工作方式有点不同。

你怎么看?我错过了什么重要的事情吗?

更新:
这是我的解决方案:
getAllFields(): http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/DefaultSelenium.html#getAllFields() 然后我遍历。

它实际上并没有解决原来的问题,所以我仍然对答案感兴趣。

谢谢!

最佳答案

(//input)[15] 返回文档中的第 15 个输入元素
//input[15] 返回作为其父元素的第 15 个输入子元素的每个输入元素。

所以你的一些表达至少是不正确的。但它们并非都是不正确的,所以我不知道为什么它不适合你。