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

一、前置说明

selenium遇到下面这种元素:

复制代码
<th id="demo id" class="value1 value2 value3 ">

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

python 复制代码
find_element('id', 'demo id')

这种写法会直接报错。

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

python 复制代码
find_element('class name', 'value1')

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

python 复制代码
find_element('class name', 'value1 value2 value3')

二、解决方案

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

python 复制代码
    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验证

欢迎技术交流:

相关推荐
郝学胜-神的一滴4 小时前
Python浏览器自动化:Selenium与Playwright实战对比,网页爬虫&自动操作一站式指南
开发语言·爬虫·python·selenium·程序人生·自动化
测试开发技术4 小时前
AI时代我们要如何玩抓包测试:Reqable + AI Agent
软件测试·人工智能·测试工具·接口测试·agent·抓包
泽众云测试1 天前
国产化替代国外性能测试工具推荐:泽众PerformanceRunner
软件测试·测试工具·性能测试
墨云安全1 天前
自动化渗透测试工具有哪些?2026 年引擎原理、任务编排与误报抑制实践
git·测试工具·网络安全·渗透测试·自动化
芝麻馅汤圆儿1 天前
sfnt-pingpong -测试网络性能和延迟的工具
测试工具
Wokoo72 天前
Selenium 核心 API 解析(三)
python·功能测试·selenium
ck0135792 天前
图片抠图怎么做?从背景去除到透明 PNG 的实用教程
人工智能·测试工具·音视频·媒体·视频
LT10157974442 天前
2026年国内有哪些好用的性能测试工具?
测试工具
技术人生0012 天前
Selenium 工程化模板(日志+异常截图,可直接复制使用)
python·selenium·测试工具
Wokoo72 天前
Selenium:元素定位、动态适配与性能优化(二)
前端·selenium·自动化