news 2026/7/2 12:10:37

UI自动化定位“字典”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UI自动化定位“字典”

一、核心心法(先看这个)

在写脚本前,记住这三个优先级:

  1. 看文本:用户能看到什么,我们就用什么(label,span,button里的字)。

  2. 看属性:如果没文本,看id,name,placeholder,role

  3. 看层级:如果以上都没有,看它坐在哪个“稳定的椅子”上(父级节点)。


二、基础标签字典(网页积木的含义)

HTML标签

中文名

在UI自动化中的意义

常见坑点

<div>

盒子/容器

最不推荐用来定位。它就像快递盒,什么都能装,长得都一样。class经常变。

千万别用纯div定位,除非它有独特的idclass

<span>

行内文本

常用。通常用来显示单纯的文字,比如表格里的数据、“用户名”后面的冒号。

它本身不可点击,点击时要找它的上级(爸爸或爷爷)。

<label>

标签

强烈推荐。表单项的“名字”。比如“采购单位”、“计划名称”。它是输入框的“身份证”。

点击label通常会自动聚焦到对应的输入框。

<input>

输入框

必用。文本输入、单选、复选、文件上传都在这里。

文件上传必须是<input type="file">

<button>

按钮

必用。凡是能点的“提交”、“保存”、“查询”都是它。

有时候按钮文字藏在<span><i>里,脚本要找button这个外壳。

<i>

图标

辅助定位。放大镜、下拉箭头、日历图标。

本身无文本,不能直接用text()定位。

<a>

链接

常用。页面跳转、下载链接。

有些按钮为了样式好看,也会伪装成<a>

<img>

图片

少用。验证码、Logo。

可以通过src属性定位。

<li>

列表项

必用。下拉框选项、菜单项、单选框选项。

通常配合role='option'role='menuitem'

<td>/<th>

单元格

表格专用。数据存放地。

定位时通常需要先找行(<tr>),再找列。

<iframe>

画中画

噩梦开始。页面嵌页面。

必须先switch_to.frame(),否则永远找不到元素。


三、Element UI 常见组件结构拆解(你的主战场)

1. 输入框 (Input)

结构特征label+input

<label>计划名称</label> <div> <input placeholder="请输入计划名称"> </div>

✅ 定位策略

  • 首选placeholder(因为唯一且稳定)。

  • 次选label文本 + 找兄弟节点的input

  • 你的脚本self.ele_input(lable='请输入计划名称', ...)

2. 下拉框 (Select)

结构特征input(伪装) +ul(列表)

<!-- 点击前 --> <input readonly placeholder="请选择项目类型"> <!-- 点击后弹出的列表 --> <ul> <li>货物</li> <li>服务</li> </ul>

✅ 定位策略

  1. 点击input或旁边的箭头(触发下拉)。

  2. 在弹出的ul里找li的文本。

    • 你的脚本self.ele_click('货物', tag_type='li')

3. 单选/复选框 (Radio/Checkbox)

结构特征:隐藏原生input+ 美化span

<label role="radio"> <input type="radio" style="display:none;"> <!-- 藏起来了 --> <span class="el-radio__inner"></span> <!-- 那个圆圈 --> <span class="el-radio__label">集采计划</span><!-- 文字 --> </label>

✅ 定位策略

  • 不要input(它被隐藏了)。

  • 不要span(可能没绑定事件)。

  • 必须点最外层的label或带有role='radio'的元素。

  • 你的脚本self.ele_click('集采计划', tag_type='label')

4. 表格 (Table)

结构特征thead(表头) +tbody(数据)

<table> <thead> <tr><th>企业名称</th><th>操作</th></tr> </thead> <tbody> <tr> <td>采购企业二</td> <td><button>选择</button></td> <!-- 操作列 --> </tr> </tbody> </table>

✅ 定位策略

  • 场景:点击“采购企业二”那一行的“选择”按钮。

  • 逻辑:先找到包含“采购企业二”的<td>,然后找它同级(following-sibling)的<td>里的<button>

  • 你的脚本self.ele_click('采购企业二', tag_type='button', depth=5)

5. 文件上传 (Upload)

结构特征div(外观) +input[type=file](灵魂)

<div class="el-upload-dragger"> <i class="iconfont"></i> <span>点击上传</span> </div> <!-- 灵魂在这里(通常隐藏) --> <input type="file" style="display:none;">

✅ 定位策略

  • 不要divspan

  • 必须找到input[type='file'],然后用send_keys传文件路径。

  • 你的脚本self.file_upload('附件', value='路径')

6. 弹窗 (Dialog)

结构特征div+aria-modal="true"

<div role="dialog" aria-modal="true" aria-label="选择采购单位"> <div class="el-dialog__header">...</div> <div class="el-dialog__body">...</div> </div>

✅ 定位策略

  • 弹窗出来后,所有操作都在这个div里面。

  • 如果页面有多个弹窗,用aria-label或标题文本来区分。


四、如何在 DevTools 中“侦查”(实战技巧)

  1. 选中元素:按F12->Elements-> 点击左上角箭头图标 -> 点页面上的按钮。

  2. 验证文本:在 Console 中输入$x("//button[contains(text(),'查询')]"),回车。如果返回数组长度大于0,说明定位到了。

  3. 查看层级:看右侧的 Styles/Computed 面板,理解元素的嵌套关系。

  4. 检查隐藏:看display:nonevisibility:hidden。如果是input,且被隐藏了,那就是文件上传控件。


五、给你的“定位决策树”

当你不知道怎么定位时,按这个顺序问自己:

  1. 我要操作的是什么?

    • 填字? -> 找input(看placeholder)

    • 点按钮? -> 找button(看内部文本)

    • 选一项? -> 找li(看role)

    • 传文件? -> 找input[type='file']

  2. 它有没有独特的文字?

    • 有 -> 直接用lable='文字'

    • 没有 -> 找离它最近的labeldiv的文字作为锚点。

  3. 它在不在表格里?

    • 是 -> 用文字定位行,再用depthxpath找操作按钮。

  4. 它在不在 iframe 里?

    • 顶部有<iframe>标签 -> 必须先切换上下文。


六、总结:从“看标签”到“写脚本”

看到的结构

脑海里想的脚本

原因

<label>采购单位</label>

lable='采购单位'

这是锚点

<input placeholder="请输入主体代码">

lable='请输入主体代码'

这是唯一ID

<button><span>查询</span></button>

lable='查询', tag_type='button'

点外壳

<li>中粮集团</li>

lable='中粮集团', tag_type='li'

选列表项

<input type="file">

file_upload(...)

特殊控件

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/28 17:56:57

微盟星启豆包平台优化方案:深耕主流AI搜索提升品牌曝光

引言 在AI搜索快速发展的今天&#xff0c;豆包作为字节跳动推出的AI大模型产品&#xff0c;已经成为国内用户量最大的AI平台之一。凭借字节跳动强大的技术实力与丰富的产品生态&#xff0c;豆包在C端用户中拥有极高的渗透率&#xff0c;成为品牌触达大众消费者的重要渠道。 对…

作者头像 李华
网站建设 2026/7/2 12:10:36

车规级晶振在汽车电子中的关键作用与选型指南

1. 晶振&#xff1a;汽车电子系统的隐形守护者我第一次拆解汽车ECU电路板时&#xff0c;注意到角落里那个银色金属外壳的小元件——晶振。当时完全没想到&#xff0c;这个不起眼的部件竟是整车电子系统的"心跳起搏器"。在传统燃油车中&#xff0c;发动机控制单元&…

作者头像 李华
网站建设 2026/6/28 17:57:07

3C塑料件全尺寸3D检测技术发展趋势

3C消费电子这个行业&#xff0c;"卷"是常态。产品迭代越来越快&#xff0c;塑料件越来越精密&#xff0c;检测要求越来越严。未来5年&#xff0c;全尺寸3D检测会往哪个方向走&#xff1f;本文从技术、应用、产业三个维度做一次趋势研判。一、行业背景&#xff1a;为什…

作者头像 李华
网站建设 2026/6/28 17:57:04

终极AMD Ryzen调试实战指南:全面掌握硬件性能调优核心技术

终极AMD Ryzen调试实战指南&#xff1a;全面掌握硬件性能调优核心技术 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…

作者头像 李华