selenium xpath定位之会变动的元素

本文介绍了在易订货库存管理系统中实现自动化脚本的过程及挑战。重点讲述了如何应对元素ID和Class属性动态变化的问题,通过使用XPath定位技术,并结合last()函数解决了定位难题。

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

最近做了一个易订货库存管理系统自动化脚本,还真是应证了那句:“敲码一小时,bug调一天”

遇到的问题:

定位网站中的某个元素时,定位的元素属性会随页面的的刷新动态加载重新生成,搞得一直定位不到该元素。(这网站反爬做还是很强的)

变化的id,class,xpath
  1.    这个网站的元素id基本都是由字母和数字组成,每次加载数字都会重新生成。

  2.    class属性也是会变化的,在你复制的xpath路径的时候,class属性就会变动,但不影响页面。(class属性一般会给多个值,总有一两个没有用的,增删都不会影响原有)
    解决办法:不使用会变动的id和class定位,尽量用手写的xpath去定位(避开会变化的属性,找不到就一直往上推,找上一级…)

  3. 复制xpath时同一个div标签位置发生改动,
    如:
    /html/body/div[6]/div[1]/div[1]/ul/li
    /html/body/div[7]/div[1]/div[1]/ul/li
    /html/body/div[8]/div[1]/div[1]/ul/li
    解决办法:上面的xpath中某个div位置是变动的,但始终位于最后一个节点上,只需将变动的数字换成last()函数即可(注:该点借鉴于https://blog.csdn.net/sun_977759/article/details/100989829
    /html/body/div[last()]/div[1]/div[1]/ul/li

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值