如何用Python实现安卓手机App自动化操作_借助Appium与ADB命令
Appium 启动失败需检查 adb 可用性、设备授权及配置:确保 adb devices 显示 device 状态,platformName 为 "Android",deviceName 为设备 ID 或非空字符串,补全 appPackage 和 appActivity;优先使用 accessibility_id 定位元素,输入前加显式等待;ADB 可兜底执行杀进程、模拟按键、截屏等操作,与 Appium 分层协作保障稳定性。
Appium 启动失败:检查 adb 是否可用且设备已授权
Appium 本质依赖 ADB 与手机通信,启动前必须确保 adb 可执行、设备在线且处于调试授权状态。常见现象是 Appium 日志卡在 Waiting for device 或报错 device unauthorized。
- 在终端运行
adb devices,确认输出中设备 ID 后显示device(而非unauthorized或空白) - 若为
unauthorized,拔插 USB 线,在手机弹出“允许 USB 调试”对话框时勾选“始终允许”,再重试 - Windows 用户需确认
adb在系统 PATH 中;Mac/Linux 用户建议用which adb验证路径,避免 Appium 启动时找不到二进制文件 - 部分厂商(如华为、小米)需额外开启“USB 调试(安全设置)”或关闭“MIUI 优化”
Python 脚本连不上 Appium Server:检查 desired_caps 中的 platformName 和 deviceName
连接失败常因基础配置不匹配,尤其 platformName 必须为 "Android"(大小写敏感),而 deviceName 不是手机型号,而是 adb devices 显示的设备 ID 或任意非空字符串(Appium 1.15+ 允许设为 "emulator-5554" 这类标识,但不能为空)。
desired_caps = {"platformName": "Android", "deviceName": "123abc", "appPackage": "com.example.app", "appActivity": ".MainActivity"}- 遗漏
appPackage和appActivity会导致启动后黑屏或闪退——它们是定位目标 App 的必要坐标,可用adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'实时获取 - 真机上建议加
"noReset": True避免每次重装清数据;模拟器可设"avd": "Pixel_3_API_30"直接启动指定 AVD
点击/输入失效:优先用 find_element_by_accessibility_id 替代 find_element_by_id
Android 原生控件的 resource-id 在不同版本或厂商定制系统中极易变化,而 accessibility-id(即控件的 content-desc 属性)更稳定,且 Appium Desktop 的 Inspector 工具默认优先展示它。
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
- 用 Appium Desktop 连接后,点选界面元素,右侧属性栏找
name字段值(对应 Python 中的accessibility_id),例如driver.find_element_by_accessibility_id("login_button") - 若无
content-desc,退而求其次用find_element_by_xpath,但避免写绝对路径(如//android.widget.Button[1]),改用含文本或唯一属性的相对表达式://android.widget.Button[@text="登录"] - 输入前务必加显式等待:
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.ACCESSIBILITY_ID, "search_field"))).send_keys("test"),否则容易因渲染延迟导致ElementNotInteractableException
ADB 命令补位:绕过 Appium 封装直接操作底层
Appium 封装虽方便,但某些场景(如强制停止进程、模拟按键、截屏分析)用原生 adb 更快更稳,且无需等待 Appium driver 初始化。
- 杀应用进程:
adb shell am force-stop com.example.app—— 比driver.terminate_app()更彻底,适合清理残留状态 - 模拟返回键:
adb shell input keyevent 4;回到桌面:adb shell input keyevent 3;这些比driver.back()更少受页面 JS 阻塞影响 - 截屏并拉取:
adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png ./,后续可用 OpenCV 做图像识别补足 Appium 无法定位的动态元素 - 注意:
adb shell命令需在 Python 中用subprocess.run()执行,别忘了检查返回码,失败时stderr里常有关键线索(如error: device offline)
真实项目里,Appium + ADB 不是二选一,而是分层协作:Appium 处理语义化交互(点击、输入、断言),ADB 负责环境控制与兜底操作。最易被忽略的是设备状态一致性——比如脚本中途手机锁屏、开发者选项被重置、或后台进程占满内存,这些都得靠 ADB 定期巡检,而不是等 Appium 报超时错误才反应过来。
如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!
猜您喜欢
我的世界怎么用指令获得一个命令方块
2026-07-03我的世界游戏里面有很多的道具可以去获得,今天给大家带来了游戏里面的用指令获得一个命令方块方法,还有小伙伴不清楚怎么用指令获得一个命令方块,那么下面就是相关的内容. 我的世界用指令获得一个命令方块方法 1、首先新建一个世界,并且开启作弊模式,如果关闭了作弊模式,是无法获得命令方块的; 2、进入创建的新世界后,打开物品栏,会发现其中没有命令方块; 3、命令方块是需要指令来获得的,打开聊天栏,输入下面这...
如何用豆包专业版搭建客户反馈系统
2026-06-28需将客户反馈转化为可行动清单:第一步上传纯文本/CSV/Excel并启用智能分类;第二步用三类提示词提取高频问题、负面断点和隐含需求;第三步按角色生成洞察摘要并导出带ID映射表。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 你需要把散落在问卷、客服对话、App评论里的客户声音,变成可行动的产品改进清单和运营决策依据,而不是靠人工逐条翻看Excel表...
可灵AI如何用脚本直驱模式快速生成视频【指南】
2026-06-28可灵AI“脚本直驱模式”需严格遵循【时间码】+【画面描述】+【关键动作动词】结构,校验失败超3行则降级;启用时须设60fps、强制执行、上传首帧参考图,并支持文本/CVS/JSON/Markdown/画布五种直驱路径。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 要用可灵AI把写好的短视频脚本直接变成画面连贯、节奏准确的视频,不绕路不重写不拼接,就...
我的世界如何用指令生成牛马
2026-06-24我的世界游戏里面有很多的指令,今天给大家带来了游戏里面的用指令生成牛马方法,还有小伙伴不清楚如何用指令生成牛马,那么下面就是相关的内容. 我的世界用指令生成牛马方法 1、在我的世界中,玩家想要用指令生成牛马需要在聊天窗口中输入指令,指令格式为/give@pminecraft:数量。 2、在游戏中按下“T”键或者“/”键来打开聊天窗口。 3、生成一头牛:/give@pminecraft:cow1 4...
我的世界如何用附魔书来附魔武器
2026-06-131,附魔书是给相匹配的物品升级属性,玩家要根据不同附魔书的属性,合成不同的附魔书。需要借助附魔台以及相关材料进行制作;2,把附魔书和需要附魔的装备放在附魔台上操作。选择要升级的属性即可。 详细答案: 1,首先要制作附魔书。附魔书是给相匹配的物品升级属性,玩家要根据不同附魔书的属性,合成不同的附魔书。需要借助附魔台以及相关材料进行制作。 2,进行附魔。把附魔书和需要附魔的装备放在附魔台上操作。选择要...
我的世界填充方块的命令是什么
2026-06-13我的世界游戏里面的填充方块的命令:1、首先进入填充的目标;2、再输入下面的箭头所示填充指令:fill指令;3、点击回车按钮即可填充。 详细答案: 先进入填充的目标; 再输入下面的箭头所示填充指令:fill指令; 点击回车按钮即可填充。 本文内容来源于互联网,如有侵权请联系删除。
我的世界附魔台如何用
2026-06-11首先我们先打开工作台用三个纸跟一个皮革合成书;第二步将三个书放在中间,其余放木板合成书架;第三步将书架按照如图摆放,至少摆放16个书架;第四步打开工作台,按图中顺序摆放合成附魔台;第五步将附魔台放在书架中心位置;第六步打开附魔台放入钻石剑与青金石。 详细答案: 首先我们先打开工作台用三个纸跟一个皮革合成书。 第二步将三个书放在中间,其余放木板合成书架。 第三步将书架按照如图摆放,至少摆放16个书架...
如何用Kimi实现自动化邮件订阅推送_利用Kimi联网整理
2026-06-04Kimi可自动抓取网页更新并生成邮件内容:先确认联网功能开启,再用精准指令提取最新信息,复制结果粘贴至邮箱发送,配合书签和模板实现每日2分钟闭环。 你需要定期获取某网站更新内容并自动发邮件通知自己,但手动刷新、复制、粘贴太耗时。kimi的联网搜索+长文本理解能力可以替代人工完成信息抓取、摘要生成和邮件内容组织,整个流程无需编程基础。 确认Kimi当前支持联网功能 打开Kimi官网或App,登录账号...
我的世界中怎么用指令获得命令方块
2026-06-04我的世界获得命令方块的指令是/give@acommand_block,并且版本必须在1.0.5版本以上,不要冒号,空格和下划线都要,输入的指令要和上面的一致,当然@a也可以改为@p,都能让我们自己获得。 详细答案: 1、首先新建一个世界,并且开启作弊模式,如果关闭了作弊模式,是无法获得命令方块的; 2、进入创建的新世界后,打开物品栏,会发现其中没有命令方块; 3、命令方块是需要指令来获得的,打开聊...
我的世界如何用指令找末地船
2026-06-04首先,我们进入游戏后,先来到末地,然后输入指令“/locateendcity”;此时会出现提示最近的末地城市方位,我们记住它后面的坐标,然后输入“/tp坐标位置”;我们已经传送到最近的末地城市了,我们在末地城市旁边寻找就可以找到末地船了。 详细答案: 首先,我们进入游戏后,先来到末地,然后输入指令“/locateendcity”。 可以看到,此时会出现提示最近的末地城市方位,我们记住它后面的坐标,...
