news 2026/6/30 17:29:57

影刀RPA新手教程:手机APP自动化完全指南——ADB连接、元素定位与批量操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
影刀RPA新手教程:手机APP自动化完全指南——ADB连接、元素定位与批量操作

影刀RPA新手教程:手机APP自动化完全指南——ADB连接、元素定位与批量操作

去年有个做电商的朋友找我帮忙,说他在手机上管理三个店铺的商品价格,每天手动比价要花两小时。我当时就想,影刀能不能控制手机?研究了一圈发现还真可以,通过ADB连接加上影刀的移动端自动化能力,我给他搭了一套手机端电商比价工具。这篇就从这个案例出发,把影刀手机APP自动化和十二大核心知识全讲清楚。

影刀安装与手机端准备

影刀在电脑端安装我就不多说了,官网下载安装包双击就行。手机APP自动化需要额外准备:你的电脑和手机要在同一个WiFi下,手机要开启开发者模式和USB调试。

安卓手机的开发者模式打开方式是——设置-关于手机-连点版本号7次。然后在开发者选项里打开USB调试和无线调试。用数据线连一次电脑授权后,就可以用无线ADB了。

影刀里有个"ADB连接"指令,输入手机的IP和端口就能连。我当时踩了个坑,手机重启后端口会变,每次都要重新查。后来写了个Python脚本自动扫描端口:

importsubprocess result=subprocess.run(['adb','devices'],capture_output=True,text=True)print(result.stdout)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f8d221f760a547499c5f9b30dbdeb733.png#pic_center)

看到设备列表里有你的手机就说明连上了。

元素定位四合一:手机端也有

手机APP的元素定位和网页不一样,影刀用的是UI Automator体系。但核心思路一致——元素捕获为主,XPath为辅,CSS在手机端用不了(那是网页的),正则做数据清洗。

元素捕获在手机端是通过ADB截屏+UI树分析实现的。影刀的"捕获手机元素"功能能抓到APP里的按钮、输入框、文本。淘宝APP的搜索框,捕获一下就能拿到。

但有些APP的元素层级特别深,或者用了自绘UI(比如Flutter应用),元素捕获抓不到。这时候上XPath:

//android.widget.TextView[@text='立即购买']

或者用resource-id定位:

//*[@resource-id='com.taobao.taobao:id/search_edit']

我比价工具里有个坑——某电商APP的商品价格是个自绘控件,UI树上只有一个空壳节点。最后用OCR文字识别解决了,截屏后识别价格区域的文字。

正则表达式在手机端主要用来提取数据。从商品标题里提取价格:

¥(\d+\.?\d*)

变量与数据类型:比价工具的数据骨架

拼多多店群自动化报活动上架!

比价工具的核心数据结构是一个"商品比价"字典:

product={"name":"蓝牙耳机","platform_a_price":89.0,"platform_b_price":95.0,"platform_c_price":79.0,"url_a":"taobao://item?id=123","url_b":"jd://item/456","url_c":"pdd://goods/789"}

字典取值时键不存在会报错,两个方案:用If先判断,或者用Python的get方法给默认值product.get(“url_c”, “”)。

列表用于批量存储——一天要比价的商品列表。JSON用于和服务器同步数据,HTTP请求拿到JSON文本,json.loads转成字典操作,操作完json.dumps转回文本发出去。

字符串操作里索引和拼接最常用。商品名截取前20个字符:product_name[:20]。价格拼接:平台名 + “:” + str(price) + “元”。

流程控制:比价工具的逻辑流

比价工具的主流程是For次数循环——遍历要比价的商品列表。每个商品循环体内调用三个子流程:平台A比价、平台B比价、平台C比价。

ForEach列表循环用于遍历商品列表。相似元素循环用于手机APP上的列表页——比如搜索结果页的商品卡片。

While条件循环用在"滑动加载更多"的场景。手机APP是无限滚动加载的,不知道到底有多少商品,用一个While循环不停滑动,直到出现"没有更多了"的文本元素。

If条件判断用于比价结果分支——如果平台C最便宜且差价超过10元,就发通知。Try-Catch包住每个平台的比价逻辑,一个平台出错不影响其他平台。

网页自动化:手机端也有网页场景

比价工具虽然主要在APP上操作,但有些电商的H5页面也要处理。影刀的网页自动化在手机端通过内置浏览器实现。

等待策略三种都要用。固定等待用在页面加载兜底。元素等待用得最多——等搜索结果出现。条件等待用于等价格元素加载完,有些价格是异步加载的,页面出来了但价格还是"加载中"。

弹窗处理在手机网页上特别烦。APP内置浏览器经常弹广告弹窗,五步标准流程走一遍:捕获弹窗-判断存在-点关闭-继续操作-Try-Catch兜底。盲点弹窗用Try-Catch包住整块操作。

翻页在手机端不是点"下一页",而是滑动屏幕。但逻辑一样——滑到底部判断是否还有更多内容。懒加载配合滚动和index去重,iframe切换和窗口切换在H5页面里也会遇到。

数据处理:比价结果的存储

比价结果我用Excel存。影刀的Excel读写指令支持指定区域读写。批量处理时攒够一批再写,别一条一条写。

文本提取与清洗——商品标题里经常带emoji和特殊符号,用正则清洗:

importre clean_name=re.sub(r'[^\w\u4e00-\u9fff\s]','',raw_name)

JSON解析用在和比价服务器对接上。数据库连接用于历史价格记录——SELECT查询历史最低价,executemany批量插入当天数据,用完关闭连接。

数据库五个常见报错记住就行:连接超时查网络、权限不足查密码、SQL语法错误打印SQL、字符集指定utf8、连接数超限及时关闭。

鼠标键盘图像自动化:手机端的核心

手机APP自动化的核心操作就是点击、滑动、输入。影刀的"点击手机元素"“滑动屏幕”"输入文本"指令覆盖了大部分需求。

模拟模式和驱动模式在手机端对应的是"坐标点击"和"元素点击"。坐标点击就是点屏幕的某个xy坐标,元素点击是通过UI树找到元素再点。坐标点击更快但容易因屏幕分辨率变化而偏移,元素点击更稳定但慢。

我比价工具有个"加入购物车"的操作,商品详情页的加购按钮是自绘的,元素捕获定位不到。用图像识别——先截图保存加购按钮的图片,然后用wait_appear等这张图片出现,click点它。图像识别支持9个锚点位置加偏移量微调,精确定位没问题。

OCR文字识别在比价工具里用得很多。价格数字、库存信息、优惠券金额,很多都是图片形式展示的。截屏后OCR识别,再正则提取数字。

进阶技能:ADB与Python协同

ADB是手机自动化的底层能力。除了影刀封装的ADB指令,你还可以直接用Python执行ADB命令:

importsubprocess# 截屏subprocess.run(['adb','shell','screencap','-p','/sdcard/screen.png'])# 下载到电脑subprocess.run(['adb','pull','/sdcard/screen.png','C:/temp/screen.png'])# 点击坐标subprocess.run(['adb','shell','input','tap','500','800'])# 滑动subprocess.run(['adb','shell','input','swipe','500','1500','500','500','300'])

HTTP请求用于对接比价API——有些平台有开放接口,直接查价格比APP操作快十倍。Python协同可以做复杂的数据分析,pandas算价差、画趋势图。

OCR识别前面说过了,补充一个技巧——识别小数字时把图片放大2倍再识别,准确率会提高很多。

平台实战:三个APP的比价

淘宝APP采集的核心是搜索流程稳定。搜索框用resource-id定位,搜索结果用相似元素循环遍历。价格有些是图片要OCR。

拼多多APP的反爬比较狠,频繁操作会弹验证码。我加了随机等待——每次操作后等1到3秒,随机数用Python生成:

importrandomimporttime time.sleep(random.uniform(1,3))

抖音电商的购物车页面是纯自绘UI,元素全部定位不到,全程靠图像识别+坐标点击+OCR。这个流程跑了三天才稳定,我当时排查一个坐标偏移的问题就搞了一下午。

小红书虽然是内容平台但也有电商。笔记里的商品链接用元素捕获抓,价格要跳转到商品页OCR。

TEMU店群矩阵自动化运营核价报活动

系统联动:比价结果推送

比价结果要推送到飞书。用HTTP请求调飞书机器人API,把比价信息格式化成卡片消息发出去。

飞书多维表格记录历史比价数据,用飞书开放平台API写入。邮件发送用影刀的"发送邮件"指令,把Excel附件发出去。定时任务设在每天上午10点和下午2点各跑一次。

工程化与规范:手机流程的稳定性

手机APP自动化的流程稳定性比网页难搞。屏幕分辨率不同、APP版本更新、网络波动,任何一个都可能让流程崩掉。

子流程封装是必须的。每个平台的比价逻辑独立成子流程,一个平台崩了不影响其他平台。参数传递——主流程传商品名给子流程,子流程返回最低价和链接。

调试技巧:打断点一行行排查。手机自动化特别需要断点,因为你看不到中间状态。在每个关键操作后加一个截屏指令,出问题时看截屏就知道卡在哪。

命名规范统一用"平台-操作-场景"格式,比如"淘宝-搜索商品-比价"“拼多多-获取价格-比价”。

版本选择上,社区版够个人用,创业版支持定时任务和更多并发,企业版有集中管理。手机自动化对并发要求不高,社区版起步够用。

速查表与常见报错

ADB连接失败——检查手机和电脑是否同WiFi、USB调试是否开启、端口是否正确。

元素捕获不到——APP可能用了自绘UI,换OCR或图像识别。

坐标点击偏移——不同手机分辨率不同,用比例坐标而非绝对坐标:x_ratio = 500/1080,实际坐标 = x_ratio * 屏幕宽度。

OCR识别错误——放大图片、增加对比度、限定识别区域。

APP闪退——操作太快了,加随机等待。

滑动没反应——滑动距离太短或速度太快,调整swipe的参数。

飞书消息发不出去——检查机器人webhook地址是否正确。

Excel写入报错"Array to String"——列表要先转字符串。日期偏移——Excel日期比Python多2天。内存不足——大文件流式读取。

我在 home.linyan.cloud 放了一份手机APP自动化的ADB命令速查表,需要的可以去看。

#影刀RPA #手机自动化 #ADB #RPA教程

作者:林焱

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

MES系统难以实施落地的几个原因

业务流程适配性差MES系统需要与企业的生产流程高度匹配,但许多企业存在业务流程不规范、标准化程度低的问题。传统行业或中小企业可能沿用经验化管理,导致系统与实际流程脱节,需大量定制开发,增加实施难度和成本。数据基础薄弱MES…

作者头像 李华
网站建设 2026/6/30 17:29:08

别再截图了!用Matplotlib的plt.savefig()一键导出高清论文图表(附完整代码)

科研图表优化指南:用Matplotlib生成出版级矢量图的5个关键步骤在学术写作和技术报告中,一张清晰的图表往往胜过千言万语。但许多研究者仍在犯一个低级错误——直接截图插入论文。这不仅会导致图像模糊失真,更会在期刊评审时暴露业余水平。本文…

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

3分钟解锁全网小说:阅读APP书源配置完全指南

3分钟解锁全网小说:阅读APP书源配置完全指南 【免费下载链接】Yuedu 📚「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 还在为小说APP广告太多而烦恼吗?是否厌倦了在不同平台间来回切换找书?今天…

作者头像 李华
网站建设 2026/6/30 17:27:26

2026免费去水印软件推荐:手机电脑在线安全不收费工具大全

在日常浏览短视频、收集图片素材、整理学习资料的过程中,水印几乎是最常见的困扰。平台自带的logo、创作者署名、画面浮动水印,不仅影响素材观感,还会破坏画面完整性,不利于个人收藏、剪辑学习和素材整理。很多用户都在寻找无广告…

作者头像 李华