xpath定位

本文介绍XPath元素定位的各种方法,包括避免使用绝对路径和元素索引,推荐使用相对路径、文字定位、部分属性值匹配及利用节点关系进行定位,并强调了定位唯一性和使用工具的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://mail.163.com/ 登录页面的用户名输入框为例,HTML代码大家自行参照

首先使用xpath定位时切忌:
1.不要使用带有空格的属性
2.不要使用自动生成的id、class 等
3.使用firebug会事半功倍
4 .定位时一定要找到唯一的属性要确保定位的唯一性,根据唯一的属性进行各种定位
5 .查看是否存在frame

先说说定位比较坑的,不建议使用
1、通过绝对路径做定位(相信大家不会使用这种方式)
/html/body/div[2]/div[2]/div[2]/form/div/div[1]/div[2]/input
再次强调千万不要直接复制或者使用绝对路径
2、不要使用元素索引如://input[1]这种

常用的定位方法:
1、通过相对路径做定位,两个斜杠代表相对路径
//input[@placeholder='邮箱帐号或手机号']
此处可以使用placeholder属性不用知道这是啥,只要是唯一的就可以用

2、使用文字定位
<span class="pr-domain j-prdomain" style="right: -76px;" id="auto-id-1510802784387">@163.com</span>
此处的文字指的是中间的“@163.com”这部分的文字
//span[contains(text(),'@163.com')]
//span[text() = '@163.com']
使用文字定位时用contains或者text()都可以,区别就是字面上的contains是指的包含,text就是纯粹的等于

3、使用部分属性值匹配: start-with、contains
//input[starts-with(@placeholder,'邮箱帐号')]
//input[ contains(@placeholder,'邮箱帐号')]

4、利用上层节点即父节点等
//form[@id = 'login-form']//input[@name='email']
双斜杠表示相对路径即匹配该节点下的所有子孙节点等
单斜杠只匹配子节点

5、使用兄弟节点preceding-sibling、following-sibling
preceding-sibling:表示当前元素的上面的兄弟元素
//span[contains(text(),'@163.com')]//preceding-sibling::input
先定位到唯一的兄弟节点,在根据兄弟节点去找需要的节点,双引号后面跟对应元素,*号表示全部的节点
following-sibling:表示当前元素的下面的兄弟元素
//label[contains(text(),'邮箱帐号或手机号')]//following-sibling::input
原理同上

最后:

1、firebug一定要看,上面表示当前元素在哪,是在主页还是在frame里面,要看好做对应的切换
2、下面表示你所写的xpath对应的或者到的元素个数一定要唯一!一定要唯一!一定要唯一!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值