讲师中心 微信公众号
AI工具推荐 视频效率加速

如何使用 Selenium 通过文本内容定位并点击动态类名的元素

落涛大大_2943

落涛大大_2943

发布时间:2026-02-06 15:34:18

|

1051人浏览过

|

来源于php中文网

原创

如何使用 Selenium 通过文本内容定位并点击动态类名的元素

当 html 元素的 class 名频繁变化但内部文本固定(如“run job”)时,应避免依赖 class 定位,转而使用 xpath 或 css 选择器基于可见文本精准匹配并点击目标元素。

在自动化测试中,面对动态生成的 class 名(如 x9f619 xjbqb8w x78zum5...),硬编码 class 会导致脚本极易失效。此时,最稳定、推荐的做法是基于元素的可见文本内容进行定位——因为业务语义(如按钮文字“Run Job”)通常具有强稳定性。

使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审
使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审

使用经过文档化的设计技能,从真实的品牌或项目背景中生成HTML原生原型、幻灯片、动态演示、可视化图表和评审流程。

下载

✅ 推荐方案:XPath 文本匹配(支持显式等待)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Edge()
driver.get("https://your-target-website.com")  # 替换为实际 URL

# 显式等待:确保元素存在且可点击(推荐用于生产环境)
wait = WebDriverWait(driver, 10)  # 最多等待 10 秒
run_job_button = wait.until(
    EC.element_to_be_clickable((By.XPATH, "//div[text()='Run Job']"))
)
run_job_button.click()
? XPath 解析://div[text()='Run Job'] 表示查找任意层级中文本内容完全等于 "Run Job" 的 元素。注意:text() 匹配的是节点的直接文本子节点,不包含嵌套标签内的文本;若文本含空格或换行,建议用 normalize-space()(见进阶提示)。

⚠️ 注意事项与最佳实践

  • 避免已弃用方法:find_element_by_xpath() 在 Selenium 4+ 中已被移除,请始终使用 driver.find_element(By.XPATH, "...") 形式;
  • 区分 text() 与 contains():
    • //div[text()='Run Job'] —— 要求完全匹配(区分大小写,不可有首尾空格);
    • //div[contains(text(), 'Run Job')] —— 模糊包含,适用于文本前后有空格或附加字符的场景;
  • 增强鲁棒性(进阶):若文本可能含不可见空白符,改用:
    "//div[normalize-space()='Run Job']"
  • 备选定位方式(CSS 不支持纯文本匹配):CSS 选择器无法直接按文本定位,因此 XPath 是此场景下的首选;若必须用 CSS,需结合 data-* 属性或父级结构辅助定位,但不如文本定位直接可靠。

✅ 总结

以不变应万变——当 class、id 等属性动态变化时,锚定业务不变量(如按钮文案)是最稳健的定位策略。配合 WebDriverWait 和 element_to_be_clickable,不仅能提升脚本稳定性,还能有效规避因页面加载延迟导致的 ElementNotInteractableException 等常见异常。务必在项目中统一采用显式等待 + 文本 XPath 的组合方案。

热门AI工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4476

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

326

2025.12.06

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

506

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

345

2026.05.13

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

20

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

20

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

20

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

40

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

20

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn