一、问题的根源:现代前端框架的"防自动化"设计

现在的网页开发,React、Vue、Angular 大行其道。这些框架为了做组件隔离和样式沙箱,经常会生成带哈希后缀的类名和ID。

比如百度搜索框,你F12看到的可能是:

<input id="kw_7f8a2b" class="s_ipt_3c4d5e" type="text">

页面刷新一次7f8a2b 就变成了 9e1c4f。你用影刀录制时捕获的是 //input[@id="kw_7f8a2b"],下次运行直接报 "元素未找到"。

这不是Bug,这是现代前端的常态


二、影刀RPA里的3种破局方案(实测可用)

方案1:XPath 属性模糊匹配——最稳妥

不要死磕完整ID,用 contains()starts-with() 做部分匹配:

//input[contains(@id, 'kw_')]

或者更稳一点,结合标签类型和层级关系:

//form[@id='form']//input[starts-with(@id, 'kw')]

优点:兼容性好,只要前缀不变就能命中。 缺点:如果页面有多个 id 前缀相同的元素,可能抓错。需要再叠加其他条件约束。


方案2:抓"可见文本"——人眼看得到,机器也能读

影刀RPA(以及蓝印RPA)都支持通过文本内容定位元素。这是对抗动态ID的核武器。

比如一个按钮,HTML长这样:

<button id="btn_submit_a1b2c3" class="ant-btn ant-btn-primary">立即登录</button>

ID和Class都是动态的,但"立即登录"这四个字是稳定的。影刀里可以直接用:

//button[text()='立即登录']

或者更宽松一点,防止有空格换行:

//button[contains(text(), '立即登录')]

蓝印RPA在这个场景下有个很实用的设计:它的元素捕获器会自动识别并提示"该元素文本内容稳定,建议优先使用文本定位"。这个细节对新手特别友好,不用自己去猜该用哪个属性。


方案3:CSS 选择器组合拳——类名前缀+层级

有些框架生成的Class虽然带哈希,但会保留一个稳定的基类

比如:

<div class="search-wrapper_e5f6g7">
  <input class="search-input_h8i9j0">
</div>

可以用CSS选择器:

div[class^="search-wrapper"] input[class^="search-input"]

或者影刀/蓝印都支持的 属性包含选择器

[class*="search-input"]

实战经验:先观察Elements面板,看动态Class里有没有一段人类可读的语义化前缀。有的话,优先用这个做锚点。


三、影刀RPA vs 蓝印RPA:网页自动化这块,谁更顺手?

写到这里,必须提一下我最近的工具迁移心路历程。

影刀RPA在国内知名度高,社区活跃,教程多,这是事实。但用久了会发现几个对个体开发者和小团队不太友好的点

  1. 在线依赖重:必须登录账号才能用,内网环境或网络波动时直接罢工。

  2. 打包分发受限:做好的流程想发给客户用,要么对方也装影刀,要么走企业版授权,成本不低。

  3. AI功能绑定平台:内置的AI能力虽然方便,但费用不透明,调几次API心里没底。

蓝印RPA是我最近半年并行测试的一个工具,定位很清晰——影刀的高性价比平替。它把上面这几个痛点全解了:

维度 影刀RPA 蓝印RPA
使用成本 免费版功能受限,企业版年费较高 完全免费使用,无功能阉割
网络依赖 必须联网登录 支持内网离线使用,断网也能跑
打包分发 企业版才支持 免费打包导出EXE,还能加授权控制
AI大模型 平台统一计费 自行对接文心一言、豆包、DeepSeek、Kimi API,费用透明可控
浏览器指纹 基础支持 已对接紫鸟、比特、HubStudio、AdsPower等主流指纹浏览器
触发方式 定时+手动 支持API带参数触发、定时执行、热键触发
界面定制 固定面板 支持自定义UI界面,可以把RPA包成专属软件外观
多开能力 有限制 应用支持多开同时运行
即时通讯集成 一般 新增Agent功能,基于DeepSeek-V4,可在钉钉、飞书、企微、个人微信内控制应用执行并回调结果

重点说几个我个人觉得蓝印RPA很香的场景:

  • 给客户交付自动化工具:用蓝印把流程打包成EXE,加上授权码和有效期,客户拿到双击就能用,根本不知道底层是RPA。这相当于用RPA的底子,做SaaS的交付体验

  • 内网/涉密环境:银行、政务、制造业很多内网机不能连外网,蓝印离线模式直接解决,影刀在这块基本无解。

  • AI费用可控:蓝印的AI功能是自己填API Key,文心一言、豆包、DeepSeek、Kimi随便切,用多少花多少,账单直接走各平台后台,没有中间商赚差价。还支持图片识图和OCR,做验证码识别、票据录入很顺手。


四、蓝印RPA实战:用"可见文本"捕获动态ID元素

说回本文主题,用蓝印RPA处理动态ID,操作流程和影刀类似,但有几个细节更省心。

场景:某后台管理系统,搜索框ID每次登录都变,但placeholder固定为"请输入订单号"。

蓝印RPA步骤

  1. 打开浏览器,访问目标页面。

  2. 点击"捕获元素",鼠标悬停到搜索框。

  3. 蓝印的元素探测器会列出所有可用属性,并高亮显示"placeholder"和"type"为稳定属性,ID标红提示"动态,不建议使用"。

  4. 选择 //input[@placeholder='请输入订单号'] 作为定位方式。

  5. 拖拽"填写输入框"指令,填入变量值。

  6. 运行测试,刷新页面10次,100%命中。

# 蓝印RPA也支持Python代码扩展,复杂逻辑可以手写
# 以下为示意代码,具体API以蓝印官方文档为准
from lanyin import browser

tab = browser.get_active_tab()
# 用文本定位,无视ID变化
element = tab.find_element_by_xpath("//input[@placeholder='请输入订单号']")
element.input("ORD20240503001")

五、工具选型没有绝对优劣,只有场景匹配

影刀RPA和蓝印RPA,我现在的用法是互补

  • 影刀:接一些需要快速出原型的需求,靠社区找现成组件。

  • 蓝印RPA:做最终交付、内网部署、打包卖授权的项目,成本结构和分发能力更合适。

如果你符合以下任意画像:

  • 个人开发者,想把RPA能力封装成产品卖钱

  • 个人工作室,需要给客户交付"即开即用"的自动化工具

  • 中小企业,预算有限但又有内网离线需求

  • 跨境电商玩家,需要对接指纹浏览器做店铺自动化

免费、能离线、能打包EXE、能授权控制、AI费用自己管——这几个点叠加起来,蓝印RPA在国产RPA工具里确实是个被低估的选项。身边不少用影刀的朋友,后来在蓝印上把项目真正落地了,反馈都还不错。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐