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

selenium 解决 id定位、class定位中,属性值带空格的解决办法

一、前置说明

selenium遇到下面这种元素:

<th id="demo id" class="value1 value2 value3 ">

1、虽然id一般不会有空格,但是前端错误的这种写法(如下图),会造成使用id定位不到元素,如:

find_element('id', 'demo id')

这种写法会直接报错。

2、class属性有空格,表示有多个属性,一般的解决办法就是使用其中一个属性,如:

find_element('class name', 'value1')

这种写法是可以定位到元素,但是往往测试人员在使用时,会将其错误的写成:

find_element('class name', 'value1 value2 value3')

二、解决方案

为了避免上述这种常见的错误,可以写一个方法封装一下,遇到这种错误时,将其转为xpath定位即可。

    def _fix_find_elements_by_multiple_values_error(self, by, value) -> List[WebElement]:"""修复 `find_elements` 方法在使用 'id' 或 'class name' 定位时,value为复合值(比如value='value1 value2')可能引发的 InvalidArgumentException。"""try:return super().find_elements(by, value)except InvalidArgumentException as original_e:if by == 'class name':by = 'class'try:return super().find_elements('xpath', f'//*[@{by}="{value}"]')except:raise original_e

三、Demo验证

欢迎技术交流:

http://www.lryc.cn/news/255206.html

相关文章:

  • gma 空间绘图实战(1):绘制多个子图,连接并展示局部放大区域
  • Unity中C#使用协程控制Shader材质变化
  • WordPress禁止显示指定类别的文章
  • C#里面的泛型(T),泛型类,泛型方法,泛型接口等简单解释
  • C语言——指针(五)
  • 文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑气电联合需求响应的气电综合能源配网系统协调优化运行》
  • PostgreSQL 主键和唯一键的区别
  • 删除表格中的所有绘图
  • Linux卸载Nginx
  • Qt之QGraphicsView —— 笔记1:绘制简单图元(附完整源码)
  • SpringIoC原理
  • 如何对售后服务的全流程进行精细化的管理?
  • SAP UI5 walkthrough step2 Bootstrap
  • Gemini:定义下一代人工智能的里程碑
  • 一些系统日常运维命令和语句
  • 微信小程序uni.chooseImage()无效解决方案
  • Rust深入浅出:编程的深邃大海中的奇妙冒险
  • go-zero开发入门-API网关开发示例
  • TCP一对一通信
  • laravel DB::connection 报错 Database connection [{$name}] not configured
  • 快捷支付是什么?快捷支付好申请吗?
  • 如何在Spring Boot中集成RabbitMQ
  • 【Spring Boot 源码学习】ApplicationContextInitializer 详解
  • 软考2018下午第六题改编逻辑(状态模式)
  • 基于深度学习的典型目标跟踪算法
  • docker搭建nginx实现负载均衡
  • Android蓝牙协议栈fluoride(二) - 软件框架
  • IDEA中的Postman!
  • el-tooltip (element-plus)修改长度
  • Verilog学习 | 用initial语句写出固定的波形