遇到过的使用xpath定位不到元素的两种情况

第一种情况,根元素是根据ID去定位的

如://*[@id="cascader-menu-3732-1"]/div[1]/ul

像这种元素的ID中间那一串3732是变化的,每一次看到都是不一样的,故而不能作为定位元素的依据

解决办法是可以把copy xpath换成copy full xpath,另外根元素ID属性也可以换成其他固定唯一的属性去定位

第二种情况,xpath里面某个标签的数字是动态的

如:下图所示想定位下拉框里面那个元素,通过xpath定位出来为/html/body/div[4]/div[1]/div[1]/ul/li

放到脚本里面去执行的时候发现找不到该元素,经过多番比对才发现这个下拉框里面的xpath是会变动的

比如点击了上面那个数据库类型下拉框,下面那个xpath就变为了/html/body/div[5]/div[1]/div[1]/ul/li

对比:

/html/body/div[4]/div[1]/div[1]/ul/li

/html/body/div[5]/div[1]/div[1]/ul/li

通过自己不断对比这变化的xpath再配合这页面,发现虽然第三个节点div里面的数字是变化的,但是始终符合一个规律,就是第三个节点div始终是body下的最后一个div

xpath里面可以引入一个last()函数,写法变为:/html/body/div[last()]/div[1]/div[1]/ul/li

对于绝对路径的xpath都是动态的,那么就需要去寻找一定的规律,比如像上述这样,如果满足一定的规律,则可引入一些特定的函数去解决

如果什么规律都不满足,那么考虑用相对路径,去寻找特殊的属性去定位到根元素,然后一层一层往下找

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值