影刀RPA新手教程_XPath语法速查表从入门到实战的15个核心表达式
2026/6/15 5:04:43 网站建设 项目流程

影刀RPA新手教程:XPath语法速查表从入门到实战的15个核心表达式

很多刚接触影刀RPA的朋友跟我说,元素定位是卡住时间最长的环节。点击"捕获元素"按钮抓到的路径动不动就失效,一换页面就不认了。

其实原因很简单:系统自动生成的XPath太"死"了,页面稍微变化就找不到元素。学会手写XPath,你的自动化流程稳定性直接上一个台阶。

我也是非技术出身,今天就按最实用的方式整理一份XPath速查手册。

XPath的四种最常用写法

影刀RPA的"捕获元素"功能虽然方便,但自动生成的路径类似这样:

/html/body/div[3]/div[2]/div[1]/div[5]/span

这种路径一旦页面加了广告位或改了布局,就全废了。下面四种手写方式要掌握:

1. 属性精确匹配

店群矩阵自动化突破运营极限!

最稳的方式,通过元素的id、class等属性定位:

# 通过id定位(唯一性最高) //*[@id="search-input"] # 通过class定位 //input[@class="search-key"] ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dd08eef48f9646428192fa175b6486dd.png#pic_center) # 通过任意属性定位 //a[@href="/login"]

@表示"属性",*表示"任意标签"。影刀RPA中点击"捕获元素"后,可以在高级编辑里把自动生成的路径替换成手写的。

2. 文本内容匹配

当你只知道元素里的文字,不知道它是什么标签时:

# 精确匹配文本 //*[text()="登录"] # 模糊匹配(包含某段文字) //*[contains(text(),"拼多多")]

实测好用:电商页面很多按钮文字会带空格,这时候contains(text(),'搜索')text()='搜索'稳得多。

3. 参照物定位

这是我采集小红书数据时最常用的技巧。你不知道目标元素怎么定位,但你知道它旁边有个固定文字:

# 场景:要找"粉丝数"数字,先定位"粉丝"标签 //*[contains(text(),"粉丝")]/../following-sibling::*[1] # 场景:要找价格,通过"¥"符号定位 //*[contains(text(),"¥")]/ancestor::div[1]//*[@class="price"]

/..表示回到父级,following-sibling是后面的兄弟节点,ancestor是祖先节点。

4. 层级与序号定位

# 取第3个匹配的元素 (//div[@class="item"])[3] # 取最后一个 (//div[@class="item"])[last()] # 取某标签下的第一个子元素 //ul[@class="list"]/li[1]

五个容易踩坑的场景

场景典型报错解决方案
动态class名“未找到元素”contains(@class,"固定部分")替代@class=全名
iframe内元素捕获不到先用"切换到iframe"指令,再捕获内部元素
元素未加载“元素不存在”在操作前加"等待元素出现"指令,超时设10秒

| 多个匹配结果 | 操作了错误元素 | 加序号[N]或用父级缩小范围 |
| 隐藏元素 | 无报错但无效 | 检查display:none,先滚动到可见区域 |

影刀RPA的一个细节:在"捕获元素"弹窗里,右键已捕获的元素可以选"编辑XPath",这里改路径比在指令面板里逐层点方便得多。

三个推荐工具

temu店群自动化报活动案例

XPath Helper(Chrome插件):打开任意网页,按Ctrl+Shift+X打开调试面板,输入XPath表达式,实时高亮匹配结果。这是学习XPath最快的方式。

影刀内置的元素编辑器:捕获元素后点"验证",如果匹配数是0就是路径写错了,匹配数大于1就说明不够精确,需要加序号。

浏览器F12控制台:在Console里输入$x('//div[@class="item"]')能直接看匹配了几个元素。$x是Chrome内置的XPath查询函数。

实战:拼多多商品标题定位

假设拼多多商品列表的HTML结构是这样的:

<divclass="goods-item"><divclass="goods-title">【官方补贴】冬季羽绒服男款加厚保暖</div><divclass="goods-price">¥89.9</div>![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dc38a85134fe4acabdfa795688e0d916.png#pic_center)</div>

直接捕获很可能拿到一个包含数字索引的长路径。手写的话:

# 捕获元素:拼多多商品列表页——商品标题 //div[contains(@class,"goods-title")] # 捕获元素:拼多多商品列表页——商品价格(取第一个) (//div[contains(@class,"goods-price")])[1]

contains写法不依赖精确class名,页面加了goods-title v2这种后缀也不影响。


#影刀RPA #RPA自动化 #XPath #元素定位 #数据采集

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询