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.mfbz.cn/a/228124.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows本地如何添加域名映射?(修改hosts文件)

1. DNS(域名系统) Domain Name System(域名系统)&#xff1a;为了加快定位IP地址的速度, 将域名映射进行层层缓存的系统. 目的&#xff1a;互联网通过IP&#xff08;10.223.146.45&#xff09;定位浏览器建立连接&#xff0c;但是我们不易区别IP&#xff0c;为了方便用户辨识I…

SAP 后继物料简介

后继物料(Discontinued Part)是SAP系统提供的一项用于物料继承与物料永久性替换的功能。在企业的日常生产业务中,经常会出于技术原因或成本原因进行大批量的物料替换或物料升级。比如说,企业可以用一种可靠性更高的组件替换先前使用的组件,或者出于节省成本的目的,使用一…

Google Gemini Pro 测试

谷歌新发布了Gemini模型&#xff0c;说是吊打GPT4&#xff0c;上手使用了下&#xff0c;感觉一般&#xff0c;没有感觉到预期的吊打。下面是与Bard的对话。

条码生成器与Zint使用

文章目录 目的条形码zint支持条形码种类下载编译qt pro配置code保存条形码目的 1: 了解条形码数据理论知识 2: 了解zint第三方库相关, 如何编译引用到项目中 条形码 条形码(Barcode)一维码 和二维码(QR code)都是用于存储信息的图形化表示方式,通常应用于商品标识、库…

led护眼灯真的能护眼吗?热门口碑好的护眼台灯推荐

2023年我国青少年近视率为53.6%&#xff0c;其中6岁以下儿童近视率为14.5%&#xff0c;小学生近视率为36%&#xff0c;初中生近视率为71.6%&#xff0c;高中生近视率为81%&#xff0c;大学生近视率为90%。 也就是孩子上了大学&#xff0c;十个里面有九个是近视&#xff0c;不戴…

【C语言】vfprintf函数

vfprintf 是 C 语言中的一个函数&#xff0c;它是 fprintf 函数的变体&#xff0c;用于格式化输出到文件中。vfprintf 函数接受一个格式化字符串和一个指向可变参数列表的指针&#xff0c;这个列表通常是通过 va_list 类型来传递的。vfprintf 函数的主要用途是在需要处理不定数…

【文件上传系列】No.1 大文件分片、进度图展示(原生前端 + Node 后端 Koa)

分片&#xff08;500MB&#xff09;进度效果展示 效果展示&#xff0c;一个分片是 500MB 的 分片&#xff08;10MB&#xff09;进度效果展示 大文件分片上传效果展示 前端 思路 前端的思路&#xff1a;将大文件切分成多个小文件&#xff0c;然后并发给后端。 页面构建 先在页…

机器学习实验二:决策树模型

系列文章目录 机器学习实验一&#xff1a;线性回归机器学习实验二&#xff1a;决策树模型机器学习实验三&#xff1a;支持向量机模型机器学习实验四&#xff1a;贝叶斯分类器机器学习实验五&#xff1a;集成学习机器学习实验六&#xff1a;聚类 文章目录 系列文章目录一、实验…

公众号提高数量

一般可以申请多少个公众号&#xff1f;目前公众号申请数量的规定是从2018年底开始实施的&#xff0c;至今没有变化。规定如下&#xff1a;1、个人可以申请1个个人主体的公众号&#xff1b;2、企业&#xff08;有限公司&#xff09;可以申请2个公众号&#xff1b;3、个体户可以申…

数组指针与函数指针

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

jetbrains卡顿(Pycharm等全家桶)终极解决方案,肯定解决!非常肯定!

话越短&#xff0c;越有用&#xff0c;一共四种方案&#xff0c;肯定能解决&#xff01;&#xff01;&#xff01;非常肯定&#xff01;&#xff01; 下面四种解决方案&#xff0c;笔者按照实际体验后的结果&#xff0c;按照优先级从高到低排序。你只要按顺序试试就知道了。 m…

labelme等标注工具/数据增强工具输出JSON文件格式检查脚本

标注的文件太多了&#xff0c;还有用数据增强工具生成了一票的新数据。在转换或使用训练时候会报错&#xff0c;错误原因是json中语法有问题&#xff0c;这样会中断程序运行&#xff0c;调试造成很大困扰。 检查确实最后有问题&#xff0c;多写了一次 写一个脚本&#xff0c;用…

Leetcode—219.存在重复元素II【简单】

2023每日刷题&#xff08;五十三&#xff09; Leetcode—219.存在重复元素II 实现代码 class Solution { public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int, int> m;int n nums.size();for(int i 0; i < n; i) {if(m…

Qt 输入一组数,排序后用柱状图显示

Qt柱状图&#xff0c;需要使用到QChart模块&#xff0c;因此需要在安装Qt时勾选上QChart模块。然后在工程.pro文件中加上 QT charts 参考代码&#xff1a; //MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QPushButton…

Unity UGUI TextMeshPro实现输入中文和表情包(Emoji)表情

目录 实现中文显示 准备工作 1、打开Window——TextMeshPro——FontAssetCreator 2、把字体文件放入SourceFont中 3、把CharacterSet改为Characters from File 4、把字体库文件放入Characters File 5、设置好参数点击Generate Font Atlas等待完成后保存 6、把生成后保存…

快速入门FastAPI中的Field参数

快速入门FastAPI中的Field参数 在构建RESTful API时&#xff0c;定义资源模型是至关重要的。FastAPI是一个用于构建API的现代Python web框架&#xff0c;它使用Pydantic库来处理数据验证和模型。在这个过程中&#xff0c;Field 参数起着关键的作用。 本教程将向您介绍如何在F…

谷歌正式发布最强 AI 模型 Gemini

2023年12月6日&#xff0c;谷歌公司宣布推出其被认为是规模最大、功能最强大的人工智能模型 Gemini。 Gemini将分为三个不同的套件&#xff1a;Gemini Ultra、Gemini Pro和Gemini Nano。 Gemini Ultra被认为具备最强大的能力&#xff0c;Gemini Pro则可扩展至多任务&#x…

探究Logistic回归:用数学解释分类问题

文章目录 前言回归和分类Logistic回归线性回归Sigmoid函数把回归变成分类Logistic回归算法的数学推导Sigmoid函数与其他激活函数的比较 Logistic回归实例1. 数据预处理2. 模型定义3. 训练模型4. 结果可视化 结语 前言 当谈论当论及机器学习中的回归和分类问题时&#xff0c;很…

C语言——指针(五)

&#x1f4dd;前言&#xff1a; 上篇文章C语言——指针&#xff08;四&#xff09;更加深入的介绍了不同类型指针的特点&#xff0c;这篇文章主要想记录一下函数与指针的结合运用以及const和assert关于指针的用法&#xff1a; 1&#xff0c;函数与指针 2&#xff0c;const 3&am…

Python基础语法详解,零基础入门必须掌握的知识点

文章目录 一、Python输出1、repr() 或 str() 转成字符串2、字符串填充空格进行格式化3、!a (使用 **ascii()**), !s (使用 **str()**) 和 !r (使用 **repr()**) 可以用于在格式化某个值之前对其进行转化 二、Python标识符三、Python保留字符&#xff08;关键字&#xff09;四、…