1. 为什么选择pyaibote做安卓自动化
第一次接触安卓自动化开发的朋友,可能听说过Appium这样的老牌工具。但今天我要介绍的这个pyaibote,用过的开发者都说"回不去了"。上个月帮朋友公司做自动化测试方案时,原本计划用Appium搭建环境,结果光是配置就花了半天时间。后来尝试pyaibote,从安装到跑通第一个脚本只用了15分钟。
pyaibote最大的优势就是开箱即用。它把传统方案中繁琐的环境配置过程,变成了双击安装包就能解决的简单操作。官方提供的集成工具包会自动配置好所有环境变量,连Node.js环境都内置好了——要知道在传统方案里,光是Node版本冲突就够新手头疼半天。
实测下来,pyaibote的执行速度确实比Appium快很多。特别是在图像识别场景,我们做过对比测试:同样的找图操作,pyaibote平均响应时间在200ms左右,而Appium需要2秒以上。这个差距在批量操作时会非常明显,比如我们需要连续点击10个相同图标的场景,pyaibote能节省近20秒时间。
2. 5分钟完成基础环境搭建
2.1 下载官方工具包
首先到官网下载最新版的集成工具包(目前最新是v1.2.3版本)。这里有个小技巧:建议下载到C盘根目录,因为部分杀毒软件可能会误报。我遇到过360安全卫士拦截的情况,临时关闭防护就能解决。
解压后你会看到一个名为AiboteTool的文件夹,里面包含这些关键文件:
Aibote.exe(主程序)node_modules(内置Node环境)android_app(手机端安装包)
2.2 一键初始化环境
双击运行Aibote.exe,程序会自动完成三件事:
- 添加系统环境变量
- 注册必要的服务组件
- 生成默认配置文件
第一次运行时可能会弹出UAC权限请求,点击"是"即可。如果看到控制台输出"环境初始化成功"的提示,就可以进行下一步了。万一遇到失败的情况,可以尝试右键"以管理员身份运行"。
2.3 安装Python库
打开命令行执行以下命令(推荐使用Python 3.10+版本):
pip install PyAibote --upgrade我习惯加上清华源加速下载:
pip install PyAibote -i https://pypi.tuna.tsinghua.edu.cn/simple验证安装是否成功:
python -c "import PyAibote; print(PyAibote.__version__)"正常应该会输出版本号,比如1.2.3。
3. 手机端配置详解
3.1 开启开发者模式
不同品牌的手机开启方式略有差异,但核心步骤都是:
- 进入设置 → 关于手机
- 连续点击"版本号"7次
- 返回设置首页会发现多了"开发者选项"
有个容易忽略的细节:部分厂商(如小米)需要额外开启"USB调试(安全设置)",否则后续连接时只能充电无法传输数据。
3.2 安装手机端服务
通过USB连接电脑后,把工具包里的android_app/aibote.apk安装到手机。如果不会手动安装,可以用官方的投屏工具直接拖拽安装:
- 运行
Aibote.exe - 点击顶部菜单的"投屏"按钮
- 将APK文件拖入投屏窗口
安装完成后,手机端会出现名为"AiboteService"的应用。第一次打开时需要授予所有权限,特别是"显示在其他应用上层"和"无障碍服务"这两个关键权限。
4. 内网连接实战技巧
4.1 双端网络配置
确保电脑和手机连接同一个WiFi后:
- 在电脑命令行输入
ipconfig,记下IPv4地址(如192.168.1.100) - 手机端APP点击"配置脚本"
- 在"脚本地址"栏填写电脑IP
- 端口号建议用8000-9000之间的数值(避免常用端口冲突)
这里有个坑:部分路由器会开启AP隔离,导致设备间无法互通。如果连接失败,可以尝试:
- 关闭路由器的"AP隔离"功能
- 或者用手机开热点,电脑连接该热点
4.2 端口映射验证
在电脑端用这个命令测试端口是否通畅:
telnet 192.168.1.100 8888如果提示连接失败,可能是防火墙拦截了。解决方法:
netsh advfirewall firewall add rule name="Aibote" dir=in action=allow protocol=TCP localport=88885. 第一个自动化脚本
5.1 基础代码结构
创建一个demo.py文件,写入以下代码:
from PyAibote import AndroidBotMain import time class MyBot(AndroidBotMain): Log_Level = "DEBUG" # 开启调试日志 def script_main(self): # 解锁手机屏幕 self.unlock_screen() # 打开微信 self.start_app("com.tencent.mm") # 等待3秒 time.sleep(3) # 点击发现页 self.click(500, 1800) # 坐标需根据实际屏幕调整 if __name__ == '__main__': MyBot.execute("0.0.0.0", 8888)5.2 脚本调试技巧
运行脚本后,手机端APP点击"启动脚本"即可执行。建议开启悬浮窗功能,这样可以在任意界面快速触发脚本。如果遇到元素定位问题,可以用这些方法调试:
- 使用
get_element_rect获取控件坐标 - 通过
take_screenshot保存当前画面 - 用
find_image进行图像匹配
我常用的调试模式是在代码里插入检查点:
print("当前页面元素:", self.get_page_source()) self.take_screenshot("debug.png")6. 进阶功能实战
6.1 图像识别优化
pyaibote的图像识别支持多种匹配模式:
# 精确匹配(默认) result = self.find_image("wechat_icon.png") # 模糊匹配(相似度80%) result = self.find_image("wechat_icon.png", threshold=0.8) # 区域限定搜索 result = self.find_image("wechat_icon.png", rect=(100,200,300,400))实际项目中,建议把常用图片素材放在单独目录,用相对路径引用:
ICON_DIR = os.path.join(os.path.dirname(__file__), "icons") self.find_image(os.path.join(ICON_DIR, "home.png"))6.2 多设备管理
如果需要控制多台手机,可以这样处理:
devices = { "小米12": ("192.168.1.101", 8888), "华为Mate40": ("192.168.1.102", 8889) } for name, (ip, port) in devices.items(): bot = MyBot() bot.connect(ip, port) bot.start_app("com.tencent.mm")7. 常见问题排查
连接超时问题:
- 检查电脑防火墙是否放行端口
- 确认手机端输入的IP和端口正确
- 尝试关闭电脑的IPv6协议
脚本执行中断:
- 确保手机没有进入休眠
- 关闭省电模式
- 检查是否误触了屏幕锁
图像识别失败:
- 截图对比原始图片是否有差异
- 调整threshold参数
- 考虑使用OCR文字识别作为备用方案
最近帮客户部署时遇到一个典型问题:脚本在夜间执行总是失败。后来发现是手机自动开启了护眼模式,导致颜色识别异常。解决方法是在脚本开头强制关闭护眼模式:
self.set_screen_normal()