Selenium 元素不能定位总结
目录
元素不能定位总结:
1、定位语法错误:
定位语法错误,如无效的xpath,css selector,dom路径错误,动态dom
定位语法错误,动态路径(动态变化)
定位策略错误,如dom没有id用id定位当然定位,使用dom中不存在的属性定位
解决办法:
2、元素未显示
等待时间不够
解决办法:
元素隐藏在其他元素下(如列表选项,二级窗口),需要交互才展示
解决办法:
3、元素在dom中存在多个,未使用正确的查找方法
解决办法:
解决办法:
4、selenium自身问题:
解决办法:
5、元素不在当前视觉范围
解决办法:
6、其他原因
网络异常
浏览器窗口异常关闭
网站后台异常页面无法加载
元素不能定位总结:
1、定位语法错误:
-
定位语法错误,如无效的xpath,css selector,dom路径错误,动态dom
-
定位语法错误,动态路径(动态变化)
-
定位策略错误,如dom没有id用id定位当然定位,使用dom中不存在的属性定位
解决办法:
建议编码时现在浏览器调试模式下使用编写的xpath、css selector 在待测页面定位一下,看能不能识别到元素

2、元素未显示
-
等待时间不够
一些页面需要加载的资源比较多:如图片、样式、js动态文件等,因此如果页面没有加载完的话,有些元素是不会显示的,也定位不到
解决办法:
使用webdriverwait +显性条件来增加等待时间
WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located(loc))
常见的显性条件如下:
visibility_of_all_elements_located
用于检查的DOM上是否存在所有元素的期望页面并可见。可见性意味着元素不仅
显示,但也具有大于0的高度和宽度。定位器-用于查找元素一旦找到并可见WebElement,就返回其列表
text_to_be_present_in_element
检查给定文本是否存在于指定的元素。定位器,文本
invisibility_of_element_located
检查元素是否不可见的期望出现在DOM上。用于查找元素的定位器
number_of_windows_to_be
期望窗口数为某个值
-
元素隐藏在其他元素下(如列表选项,二级窗口),需要交互才展示
一些元素隐藏在另外一些组件下面,如列表组件中的选项,窗口组件中的文字、按钮等
解决办法:
等其他条件满足再操作
3、元素在dom中存在多个,未使用正确的查找方法
例如定位语法在页面定位到多个元素未使用find_elements而是用find_element,find_element默认查找第一个就返回因此可能查不到想要查找的元素。这种情况如果要交互的元素不是第一个就会报异常了。
解决办法:
使用find_elements定位多个元素
另外还有可能查找第一个dom在页面没有显示,这种情况是dom能找到,但是这个元素没有在页面展示。什么意思呢?就是说是个伪元素,这个元素在页面是没有宽度和高度的因此也会报错。这种情况可以使用显性条件(excepted condition)“visibility_of_element_located”来查找,它表示元素的长宽不为0,保证元素在页面是存在的。
解决办法:
使用显性条件避免定位到伪元素
4、selenium自身问题:
如图表元素(canvas,svg),由于图表元素是使用js绘制的,对selenium来说相当于一张图片,所以使用dom定位不到
解决办法:
借助第三方库或者图形识别来处理
5、元素不在当前视觉范围
待操作元素在其他windows、frame、iframe、alert等
解决办法:
这个时候需要需要切换到新窗口、frame、iframe、alert才能定位到。
6、其他原因
网络异常
有些时候网络连接异常会导致页面未加载成功,故而无法操作页面
浏览器窗口异常关闭
测试清理使用了driver.close()关闭了窗口,导致后面的会话异常无法执行后续测试
网站后台异常页面无法加载
例如应用发版部署中,应用未完全启动,故而无法查找页面元素
相关文章:
Selenium 元素不能定位总结
目录 元素不能定位总结: 1、定位语法错误: 定位语法错误,如无效的xpath,css selector,dom路径错误,动态dom 定位语法错误,动态路径(动态变化) 定位策略错误,如dom没有id用id定位…...
1-2 非阻塞延时实现LED闪烁功能(累计定时中断次数)--多路软件定时器的功能实现
单路 #include <reg51.h> #include "delay.h"#define LED_SHINE_TIME 1000//1sunsigned int g_u16_timer_cnt;//在定时器的基础上进行计数 unsigned char g_u8_time_flag;//时间到的标志 unsigned char g_u8_timer_soft_enable;//定时器的软件开关sbit LED0P1…...
数据类型及强制转换
数据类型范围(基本) 数据类型占内存字节数表示范围数量级char(signed char)1-128~1272unsigned char10~2552short int(signed short int)2-32,768~32,7674unsigned short int20~65,5354int(sig…...
Python----高阶函数
高阶函数:把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。 高阶函数的由来 在Python中,abs()函数可以完成对数字求绝对值计算。 ① 正数的绝对值是它本身 ②…...
Unity地面交互效果——6、地形动态顶点置换和曲面细分
回到目录 Unity置换贴图局部距离曲面细分 大家好,我是阿赵。 这篇文章是我无聊的时候做了一个demo,觉得挺有趣,于是就发上来。这里面包含了4个内容:置换贴图、顶点偏移、局部曲面细分,曲面细分按距离调整强度。 …...
Linux系统服务之一次性服务(2)
接前一篇文章:Linux系统服务之一次性服务(1) 本文内容参考以下文章: Systemd OneShot 系统启动时运行一次特定的命令或脚本,并在执行完毕后自动退出-CSDN博客 oneshot一次性服务_typeoneshot-CSDN博客 systemd.serv…...
Vue项目解决van-calendar 显示白色空白,需滑动一下屏幕,才可正常显示
问题描述,如图 ipad(平板)或者 H5移动端引入Vant组件的日历组件(van-calendar),初始化显示空白,需滚动一下屏幕,才可正常显示 解决方法 需在van-calendar上绑定open"openCalendar"事件…...
Linux:可视化管理工具Webmin的安装
一、下载 地址:Webmin官网 我这里下载的是1.700-1版本 二、安装 1、在虚拟机上新建目录并安装软件 mkdir /opt/webmin rpm -ivh webmin-1.700-1.noarch.rpm2、修改webmin的root密码 /usr/libexec/webmin/changepass.pl /etc/webmin root 1234563、修改端口(可…...
WARNING: Access control is not enabled for the database.
MongoDB shell version v3.4.24 WARNING: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted. 1)未启用访问控制 2)读写访问不受限制 D:\MongoDB\Server\3.4\bin>mongo MongoDB shell version v3.4.24 c…...
JavaScript编程进阶 – Return语句
JavaScript编程进阶 – Return语句 JavaScript Programming Advanced – Return Statement By JacksonML 就像人们习惯的函数一样,总觉得在函数体最后需要一个return语句,标志着函数的结束,就像下面这个函数 theFunc() 那样。 function theFunc() { re…...
Python与设计模式--备忘录模式
23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...
04_Flutter自定义Slider滑块
04_Flutter自定义Slider滑块 一.Slider控件基本用法 Column(mainAxisAlignment: MainAxisAlignment.start,children: <Widget>[Text("sliderValue: ${_sliderValue.toInt()}"),Slider(value: _sliderValue,min: 0,max: 100,divisions: 10,thumbColor: Colors.…...
服务器数据恢复—EMC存储raid5故障导致上层应用崩溃的数据恢复案例
服务器存储数据恢复环境: EMC某型号存储,8块组建一组raid5磁盘阵列。上层操作系统采用zfs文件系统。 服务器存储故障&分析: raid5阵列中有2块硬盘未知原因离线,raid5阵列崩溃,上层应用无法正常使用。 服务器数据恢…...
7.1 Windows驱动开发:内核监控进程与线程回调
在前面的文章中LyShark一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以监控进程线程创建为例,在Win10系统中监控进程与线程可以使用微软提供给我们的两个新函数来实现,此类函数的原…...
基于ssm的汽车论坛管理系统设计与实现
基于ssm的汽车论坛管理系统设计与实现 摘要:信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题…...
实习开发日志经验总结(一)
文章目录 前言实习日志经验总结 前言 自己之前实习过程中遇到的问题以及相应的解决过程,我都有记录形成比较凌乱的实习日志。故想在整个实习日志的基础上,提炼一些技术知识点或者是解决问题的思路。考虑到实习项目的不方便公开性,所以会隐去…...
【Unity基础】8.简单场景的搭建
【Unity基础】8.简单场景的搭建 大家好,我是Lampard~~ 欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 (一)场景资源 (1)Import资源包 今天我们将手动去搭一个简单的场景,当…...
傅里叶变换及其在机器学习中的应用
一、介绍 傅立叶变换是一种数学技术,在各个科学和工程领域发挥着关键作用,其应用范围从信号处理到量子力学。近年来,它在机器学习领域发现了新的意义。本文探讨了傅里叶变换的基础知识及其在机器学习应用中日益增长的重要性。 …...
xorm源码学习
文章目录 XORM源码浅析及实践ORMORM vs. SQLXORM软件架构 ORM 引擎 Engine——DBM*core.DB Golang:database/sql 源码基本结构连接复用,提高性能。增加数据库连接池数量连接管理 database/sql主要内容:sql.DB创建数据库连接sql.Open()DB.conn…...
Vue3中的<script setup>和<script>的区别
相同点 在一个 Vue3 单文件组件 (SFC)中,<script setup> 和 <script> 它们各自最多只能存在一个。 不同点 <script setup> 这个脚本块将被预处理为组件的 setup() 函数,这意味着它将为每一个(也可以说每一次)组件实例都执行。 <…...
Unity场景交互动画工程化实践:触发、动画、物理与渲染四层协同
1. 这不是“加个动画”那么简单:为什么90%的Unity场景交互动画最终显得廉价又生硬? “用 Unity 打造超酷场景交互动画”——这句话在B站、知乎和独立游戏开发群里的出现频率,大概和“三分钟学会Python”差不多。但真正跑完一个完整流程、让玩…...
从红宝石到光纤:固体激光器家族里,谁才是工业加工界的‘六边形战士’?
从红宝石到光纤:固体激光器家族里,谁才是工业加工界的‘六边形战士’? 在金属切割车间里,激光束正以毫米级精度划过不锈钢板;精密电子产线上,纳米级激光打标机为电路板刻印追溯码;汽车焊接工段…...
3步解决洛雪音乐播放问题:六音音源修复完整指南
3步解决洛雪音乐播放问题:六音音源修复完整指南 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 你是否遇到过洛雪音乐升级后无法播放歌曲的困扰?点击播放按钮只有加载动画…...
华硕笔记本终极优化指南:如何用G-Helper轻量级工具全面提升使用体验
华硕笔记本终极优化指南:如何用G-Helper轻量级工具全面提升使用体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook…...
HHEML:基于FPGA硬件加速的边缘隐私保护机器学习框架
1. 项目概述:当边缘计算遇上隐私保护,一场硬件加速的革新在医疗影像分析、智能门禁、工业质检这些场景里,你肯定不希望自己的X光片、人脸数据或者生产线上的瑕疵图片,在传到云端服务器做AI推理时,被“有心人”看个精光…...
Unity异步编程新选择:用R3和NuGetForUnity搞定响应式事件流(附AOT兼容性测试)
Unity异步编程新选择:R3与NuGetForUnity的深度实践指南引言:为什么我们需要更好的事件处理方案?在Unity开发中,事件驱动编程早已成为构建复杂交互系统的核心范式。从传统的UnityEvent到协程(Coroutine),再到曾经风靡一…...
全球首个通用智能人“通通“走向现实——具身智能落地的工程师视角
全球首个通用智能人"通通"走向现实——具身智能落地的工程师视角 工程师视角深度剖析 | 2026年5月24日 一、什么是"通通"?——先把这个概念说清楚 2026年初,北京通用人工智能研究院(简称"通研院")…...
自动售货机(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)_文章底部可以扫码
摘 要 自动售货机的应用,不仅可以充分节省人力资源,而且还促进商业贸易发展,给人们的生活带来诸多便利。可编程控制器作为控制系统的大脑,按照工艺说明分析,对各种外部输入信号按照系统的工艺分析结果及程序设计流程&…...
时序数据库 + 微服务:MyEMS 如何支撑千万级测点的能源管理平台
在工业能源数字化的实践中,一个常被低估的命题是:当一家大型制造集团拥有数十个厂区、每个厂区部署数千台智能表计和传感器,全集团同时在线的测点数量突破千万级别时,能源管理系统应当具备怎样的技术底色?这不是一个关…...
手把手教你用Arsenal Image Mounter和VMware搞定Windows 11 E01镜像仿真,避开‘No Media’和卷影复制服务坑
实战指南:Windows 11 E01镜像仿真全流程与避坑手册当你需要复现一个Windows 11系统环境进行数字取证分析或软件兼容性测试时,E01格式的磁盘镜像是常见选择。但直接从镜像到可运行的虚拟机,这条路上布满了技术陷阱——从控制器类型不匹配导致的…...
