【发布时间】:2014-06-30 21:41:20
【问题描述】:
关于 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 等原生扩展 - 几乎所有的都给了我正确的结果。所以看起来 Seleniums XPath 解析器的工作方式有点不同。
你怎么看?我错过了什么重要的事情吗?
更新: 这是我的解决方案: getAllFields(): http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/DefaultSelenium.html#getAllFields() 然后我遍历。
它实际上并没有解决原来的问题,所以我仍然对答案感兴趣。
谢谢!
【问题讨论】:
-
我很确定 Selenium 不提供完整的标准 XPath。但我现在无法确定证据,除了你刚刚发布的。你的表达式
(//input)[N]应该可以工作。 -
@LarsH:Selenium RC API 可能无法正确支持 XPath 1.0 的某些部分,但我不知道。我确实多次使用过这类东西的 XPath 版本,而且它们工作得很好。
-
@Ross:很高兴知道。以后我会留意例外情况,因为我没有提供任何具体信息。
标签: phpunit selenium-rc xpath