xpath相对定位学习

时间:2024-03-29 13:22:17

在只能通过xpath定位的情况下,最好选择相对定位,相对定位一脸懵逼的朋友,可以看完下面的内容,相对定位就不迷茫了。

点击F12-查看器在输入框里可以边写边检测自己是否写对
看完下面的语法知识,找个页面自己练习一下,半个小时基本就可以了解了。
xpath相对定位学习

1.基本语法
1.1 路径以“/”开始 表示找到满足该绝对路径的元素;
1.2 路径以“//”开始 表示找到文档中所有满足“//”后规则的元素 如//BBB 表示找到所有BBB元素;
1.3 * 表示所有 如//* 表示选择所有元素;
1.4 [表达式] 进一步限定元素:①[数字] 表示选择第几个, 其中[last()]表示最后一个;②[@属性] 限定满足该属性 ,如//BBB[@name] 表示含有name属性的BBB元素,//BBB[not(@*)]表示所有没有属性的BBB元素;拓展,属性赋值,如 /BBB[@name=“yyy”] 表示所有含有name属性且其值为“yyy”的BBB元素;
1.5 | 逻辑或 将多个路径合并到一起 如//BBB | /AAA 选择所有BBB元素和根元素AAA [可合并的路径数目没有限制]

2.1使用标签名+节点属性定位
语法://标签名[@属性名=属性值]

例如://input[@id=‘password’]

2.2.组合元素索引(下标)定位
例如://input[@id=‘password’]/div[1]

2.3.通过部分属性值匹配

语法://标签名[contains(@属性名,部分属性值)]、//标签名[starts-with(@属性名,部分属性值)]、//标签名[ends-with(@属性名,部分属性值)]

a.starts-with 例子: //input[starts-with(@id,‘ctrl’)] 解析:匹配以 ctrl开始的属性值

b.ends-with 例子://input[ends-with(@id,’_userName’)] 解析:匹配以 userName 结尾的属性值

c.contains() 例子://input[contains(@id,‘userName’)] 解析:匹配含有 userName 属性值
xpath相对定位学习: *在一起会变成表情,大家注意一下

//following-sibling:???? # 定位当前元素的同级

例如://div[contains(text(),“合作伙伴”)]//following-sibling::
*/div/input

2.4.使用文本内容匹配
函数:text()
语法:文本全部匹配://标签名[text()=文本内容]

文本部分匹配-包含://标签名[contains(text(),部分文本内容)]

示例代码如下:

driver.find_element_by_xpath("//a[text(),“退出”]")#文本全部匹配

driver.find_element_by_xpath("//a[contains(text(),“出”)])#文本部分匹配

2.5、使用轴定位表达式

轴运算名称:

ancestor:祖先节点,包括父节点

parent:父节点

preceding:当前元素节点标签之前的所有节点(HTML页面之前的)

preceding-sibling:当前元素节点标签之前的所有兄弟节点(同级)

following:当前元素节点标签之后的所有节点

following-sibling:当前元素节点标签之后的所有兄弟节点(同级)

使用语法:轴名称::节点名称

前后的定位与之前一致,用/隔开即可。

例如://div[contains(text(),“合作伙伴”)]//following-sibling:????/div/input
xpath相对定位学习

定位文本包含合作伙伴的元素同一级下的div下的input