news 2026/4/16 13:41:40

Python+selenium自动化元素定位防踩坑(建议收藏)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python+selenium自动化元素定位防踩坑(建议收藏)

踩坑一:StaleElementReferenceException

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

异常原因:意思是,引用的元素已过期。原因是页面刷新了,此时当然找不到之前页面的元素,就算是后退回来的页面也是不一样的。

在编写脚本时一直报这个错,使用显示等待都不行,在一顿百度操作后才知道是元素被刷新了

我们发现,仅仅是刷新了一下页面,两次的element id是不同的,这就说明这是两个不同的元素,如果用之前的element,自然会报错

原因很明显,你用别人的身份证id去找现在的人,哪怕这两个人长的很像,他也会告诉你,对不起,你找错人啦。

解决方法:

有时我们无法避免,不确定什么时候元素就会被刷新。页面刷新后重新获取元素的思路不变,这时可以使用python的异常处理语句:try…except…,异常出现时重新执行,关键代码如下

如下图:我在实际工作当中编写脚本时使用异常try捕获异常后,页面刷新后重新获取元素,可以成功找到元素了

踩坑二:ElementClickInterceptedException(元素点击交互异常)

具体报错:selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted is not clickable at point (1421, 283). Other element would receive the click:

E (Session info: chrome=104.0.5112.102)

意思是,元素定位相互覆盖,元素已经找到,但是无法点击

解决方法:

方法一:使用强制等待,但是每次都有类似的元素无法点击使用强制等待的话会延长脚本执行时间

time.sleep()

前言:之前便遇到过很多次该问题的报错,就没有管它,但是随着越来越多的元素报该错,每次使用强制等待会大大延长脚本的执行时间,于是便网上找各种方法解决该问题,最终发现是自己使用显示等待的方法错了

如下是显示等待的用法和区别

方法二:显性等待

element_to_be_clickable--元素是否可点击

vibilityofelement_ located--元素是否可见

presence_of_element_located--元素是否存在

如上:三种等待方法,最开始我一直使用的是presence_of_element_located,判断元素是否存在,最终还是报错,提示元素元素点击拦截异常

element_to_be_clickable--等待元素出现可以点击,便可以元素定位成功

需要先导包:

from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait
element = WebDriverWait(self.browser, 5).until( EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='请输入会员手机号']"))) element.clcik()

方法三:使用JS点击

然而有时即使已经显式等待了,却仍然会报错: ElementClickInterceptedException,这多少有点奇怪,为什么 webdriver 有时就是无法点击,我不知道,也许这和他首先执行的一些验证检查有关,反正就在这一刻,它不给你点

代码如下:

  1. element = self.browser.find_element(By.XPATH, "(//span[@class='el-checkbox__inner'])[4]")

  2. self.browser.execute_script("arguments[0].click();", element)

这是通过 JavaScript 完成的点击,js可以避开一些校验

👆以上便是在编写selenium自动化时元素定位时踩的坑,以此分享防止踩坑

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:52:15

2026年河北省职业院校技能大赛移动应用设计与开发赛项样题

2026年河北省职业院校技能大赛高职组移动应用设计与开发赛项样题 文章目录2026年河北省职业院校技能大赛高职组移动应用设计与开发赛项样题模块一:产品原型设计任务1:绘制“左转向视频显示”模块界面原型任务2:绘制“仪表盘”和“主屏”媒体播…

作者头像 李华
网站建设 2026/4/16 12:00:19

微信小程序自动化测试实战,支持录制回放、智能遍历

为了满足小程序性能、功能等方面的测试需求,微信团队上线 小程序云测服务,提供丰富的自动化测试能力。其中 智能化 Monkey 服务 凭借着零代码、低成本的优势吸引不少开发者使用。 在服务使用过程中,我们发现开发者有更多的进阶需求&#xff…

作者头像 李华
网站建设 2026/4/16 12:46:31

知网AIGC疑似度90%?3步实操降到5%,亲测答辩顺利通过!

2025年起,高校已明确要求毕业论文要检测AIGC率,AI率高于30%或40%就不能参加答辩,而部分学校、硕士论文更加严格,要求在20%以内。 这其中,大多数高校使用的AIGC检测系统是知网、万方、维普等主流查重系统,这…

作者头像 李华
网站建设 2026/4/11 10:46:16

计算机毕业设计springboot基于BS架构的工艺品展示系统 基于SpringBoot的民间手工艺品在线展览平台 B/S模式下SpringBoot非遗工艺品数字博物馆

计算机毕业设计springboot基于BS架构的工艺品展示系统ejd34h3s (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当传统工艺遇上云端,一块屏幕就能穿越千年。 在“Spri…

作者头像 李华
网站建设 2026/4/16 10:37:42

企业AI智能体:从“数字员工”到产业变革引擎,2025开启规模化落地元年

千万级订单瞬间拆解排产,万人员工调度精准到岗,曾经需要大量人工的复杂决策如今只需一个AI指令就能完成——在联想武汉产业基地,由AI驱动的“鲁班超级智能体”正重新定义智能工厂的管理范式。2025年,当全球科技巨头争相布局AI智能…

作者头像 李华