RPA 工程师必备:XPath 表达式实战与避坑指南
XPath 与 RPA 的关联
XPath(XML Path Language)是一门用于定位 XML/HTML 文档中节点(元素)的语言。在 RPA 机器人开发中,核心需求是定位 Web 或桌面端的页面元素(如按钮、输入框、下拉框、表格单元格),而 XPath 是实现该需求最灵活、最通用的方式——相比 CSS 选择器适配场景更多,比元素 ID 或 Class 更稳定。
主流 RPA 工具(UiPath、影刀 RPA、云扩 RPA、安翼 RPA、实在 RPA)均原生支持 XPath 1.0,无需学习高版本(2.0/3.1)。本教程所有内容均基于 XPath 1.0,可直接在 RPA 工具中使用。
核心基础概念
节点类型
HTML 文档中 XPath 的节点包含元素节点(如、)、属性节点(如 id="username")、文本节点等。RPA 开发中仅需关注「元素节点」,所有定位最终都是为了找到目标元素节点。
绝对 XPath vs 相对 XPath
这是 XPath 最关键的概念,直接决定 RPA 机器人的稳定性,必须严格遵守:
- 绝对 XPath:从 HTML 根节点开始,以
/开头,路径是「根→父→子→孙」的完整层级,如/html/body/div[1]/div[2]/input。 - 相对 XPath:从目标元素的任意父节点(或自身)开始,以
//开头,无需关注完整层级,如//input[@id="username"]。
强制规范:禁止使用绝对 XPath!因为页面结构只要有微小变化(如新增或删除一个 div),绝对路径就会失效,导致机器人报「元素未找到」错误;相对 XPath 仅关注目标元素的自身属性或关联特征,稳定性远高于绝对路径。
基本符号
| 符号 | 含义 | RPA 使用场景 |
|---|---|---|
// | 从文档任意位置开始查找(相对路径核心) | 所有 RPA 定位的默认开头 |
/ | 子节点层级分隔(绝对路径开头/相对路径内层级) | 定位子元素时使用,如//div[@class="form"]/input |
. | 当前节点 | 定位自身元素时常用 |
在实际操作中,理解这些符号背后的逻辑比死记硬背更重要。比如使用 . 往往是为了在已经定位到某个容器后,进一步筛选其内部特定属性的子元素,避免路径过长带来的性能损耗。


