当前位置: 首页 > news >正文

selenium元素定位:元素点击交互异常解决方法

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 

1、异常原因

在编写ui自动化时,执行报错元素无法点击:ElementClickInterceptedException

具体报错:selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class="el-checkbox__inner">

</span> is not clickable at point (1421, 283). Other element would receive the click: <div class="cell">...</div>

E (Session info: chrome=104.0.5112.102)

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

2、解决方法

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

time.sleep()  

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

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

方法二:显性等待

element_to_be_clickable--元素是否可点击

vibility _of_ element_ located--元素是否可见

presence_of_element_located--元素是否存在

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

百度了下使用element_to_be_clickable--等待元素出现可以点击,就执行成功了

方法三:使用JS点击

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

解决方法:

 👆  这是通过 JavaScript 完成的点击,js可以避开校验以上便是在编写自动化时元素定位时踩的坑,以此记录防止再次踩坑

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

​这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络 --- 【1】欢迎来到计算机网络/计算机网络基本概念/计算机网络、互连网、互联网的区别
  • Vue的slot插槽(默认插槽、具名插槽、作用域插槽)
  • 微服务中间件之Nacos
  • JAVA 的excel数据批量导入解析 现在都用什么API工具 Apache POI 、EasyExcel 、easypoi有什么区别
  • java设计模式 桥接模式
  • kafka之视频和图片文件
  • 闯入清洁家电“诸神之战”的萤石,凭什么立足?
  • Python 工厂模式:构建灵活软件架构的秘密武器
  • 大数据Flink(一百一十六):Flink SQL的时间属性
  • 一文讲懂Mac中的环境变量
  • 如何在Linux虚拟机上安装和配置JDK
  • C++ Primer Plus(速记版)-基本语言
  • 文件的常用操作
  • 5 个最佳开源无代码项目管理工具
  • 【运维监控】Prometheus+grafana监控zookeeper运行情况
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Git初体验
  • java小心机(3)| 浅析finalize()
  • JS笔记四:作用域、变量(函数)提升
  • laravel with 查询列表限制条数
  • mongo索引构建
  • python 装饰器(一)
  • Spring核心 Bean的高级装配
  • Vue小说阅读器(仿追书神器)
  • 从零开始学习部署
  • 代理模式
  • 前端性能优化——回流与重绘
  • 日剧·日综资源集合(建议收藏)
  • 一个完整Java Web项目背后的密码
  • 一天一个设计模式之JS实现——适配器模式
  • 怎样选择前端框架
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ### RabbitMQ五种工作模式:
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (13)Hive调优——动态分区导致的小文件问题
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十六)一篇文章学会Java的常用API
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net core 依赖注入的基本用发
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @RestController注解的使用
  • @Service注解让spring找到你的Service bean
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [Android Pro] Notification的使用
  • [Android] Android ActivityManager
  • [Angular] 笔记 21:@ViewChild
  • [ARC066F]Contest with Drinks Hard
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法