Selenium中关于XPath中节点后面[1]的诡异问题?

2024-12-28 15:28:06
推荐回答(4个)
回答1:

//a[contains(@id,'abc')][2]

这个2代表你要找到 A 在家中排行老二. 而不是所有家庭合起来的第二个.

比如说
老大老二
老大老二

用 //span/a[2]

会把两个老二都找出来.

如果是这样的

老大
老大
老大
老大
老大

用这个xpath 就会找不到东西, 因为都是独生子女.

你要选中第二个老大, xpath 要这样写

(//span/a)[2]

这个方式在很多地方有效, 但在Selenium 中好像无效.

回答2:

selenium中 xpath 我一般这样用 xpath="//*/a[@id='xxx' and @class='xxx']"
要是在一个节点下有多个相同的div,就用div[1][2][3],要是只有一个就用上面那种形式比较好,或者使用firefox中的插件xpath checker 也可以查出来

回答3:

我没有办法重现这个错误~ 我创建了两个textbox
abc
abcd

然后我用selenium ide 来测试 //*[contains(@id,'abc')] 的内容就会是 abc 而不包括abcd 我感觉他的contain实际上是matches

回答4:

XPath 简介
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
什么是 XPath?
XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素
XPath 是一个 W3C 标准
XPath 路径表达式
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
XPath 标准函数
XPath 含有超过 100 个内建的函数。这些函数用于字符串值、数值,日期和时间比较、节点和 QName 处理、序列处理、逻辑值等等。
XPath 在 XSLT 中使用
XPath 是 XSLT 标准中的主要元素。如果没有 XPath 方面的知识,您就无法创建 XSLT 文档。
XQuery 和 XPointer 均构建于 XPath 表达式之上。XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运算符。
您可以在我们的《XQuery 教程》中阅读更多有关 XQuery 的知识。
XPath 是 W3C 标准
XPath 于 1999年11月16日 成为 W3C 标准。
XPath 被设计供 XSLT、XPointer 以及其他 XML 解析软件使用。
XPath 节点
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或成为根节点)。
XPath 术语
节点(Node)
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
[编辑本段]XPath存取函数
名称 说明
fn:node-name(node) 返回参数节点的节点名称。
fn:nilled(node) 返回是否拒绝参数节点的布尔值。
fn:data(item.item,...) 接受项目序列,并返回原子值序列。
fn:base-uri()
fn:base-uri(node)
返回当前节点或指定节点的 base-uri 属性的值。
fn:document-uri(node) 返回指定节点的 document-uri 属性的值。
selenium用XPath技术来记录网页元素的位置和属性.就是这么简单。