跳转到内容

执行安卓adb shell命令

执行安卓adb shell命令 用于在移动设备上执行安卓 adb shell 命令,并把执行结果保存到输出变量。它常用于执行系统级命令、获取设备信息和状态、进行文件操作和管理等,适合在测试脚本中调用原生 Shell 命令。

指令标识:ExecuteMobileCommand
指令类型:移动端指令
指令描述:执行安卓 adb shell 命令,输出执行结果

工作流支持「可视化编排」和「代码编排」两种创建方式。执行安卓adb shell命令 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。

方式怎么用适合人群
可视化编排(推荐先学)拖入「执行安卓adb shell命令」节点,在右侧表单填写命令大多数用户,零代码,适合快速搭建和调试
代码编排(Python)在脚本中调用 bots.executeMobileCommand(command="ls /sdcard/")熟悉代码、需要复用脚本或批量生成流程的用户

第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。

  • 需要执行系统级 Shell 命令,如文件操作、进程管理、系统信息查询。
  • 需要获取设备型号、Android 版本、屏幕分辨率、内存使用等设备信息。
  • 需要创建、删除、复制、移动文件或目录,读取文件内容。
  • 需要查询已安装应用列表、应用进程状态或设备系统属性。
  • 命令需要是有效的 adb shell 命令,建议先在终端中手动验证。
  • 当前执行环境已正确连接目标设备。
  • 某些命令可能需要特定设备权限,提前了解所需权限。
  • 避免在单条命令中执行长时间阻塞的任务,必要时拆分耗时操作。

【图片占位 | command-executemobilecommand-config】
截图内容建议: 截一张可视化编排页面,画布选中「执行安卓adb shell命令」节点,右侧属性面板展示「命令」输入框和「将结果保存至」区域。
标注建议: 用 ① 标出画布中的节点,用 ② 标出命令输入框,用 ③ 标出输出变量,用 ④ 标出运行按钮。
用户看完应能明白: 这个指令只需要填写一条 Shell 命令,执行结果会写入输出变量供后续节点引用。

下面用一个常见场景演示:列出设备 /sdcard/ 目录下的文件。按 3 步即可跑起来:

  1. 在画布中添加 执行安卓adb shell命令 指令。
  2. 命令 中填写要执行的命令:
ls /sdcard/
  1. 将结果保存至 中填写输出变量名(例如 result),点击运行查看执行结果。
界面名称代码属性名类型必填默认值说明
命令commandString-需要执行的 Shell / ADB / iDevice 命令字符串。
界面名称代码属性名类型必填说明
将结果保存至outKeyString保存命令的执行结果。
  • 命令正常执行,输出变量中包含预期的执行结果。
  • 运行日志中没有命令报错或权限错误。
  • 后续节点能正确引用执行结果。
现象 / 报错原文可能原因处理建议
命令为空报错「命令」未填写检查命令是否填写;代码编排确认 command 已传入
返回空字符串或错误信息命令执行失败、语法错误先在 adb shell 中手动验证命令是否正确
提示权限不足命令需要特定设备权限确认设备权限,或改用具备权限的命令
命令执行超时命令耗时过长或阻塞拆分耗时操作,避免长时间阻塞任务

代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。

# 列出设备 /sdcard/ 目录下的文件
bots.executeMobileCommand(
command="ls /sdcard/",
outKey="result",
)

可视化表单里的「命令」「将结果保存至」分别对应代码里的 commandoutKey

如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)。

Q1:command 和 outKey 参数有什么要求?

Section titled “Q1:command 和 outKey 参数有什么要求?”

A: command 为必填,需要是有效的 ADB Shell 命令;outKey 用于存储命令执行结果(字符串类型)。

A: 支持标准的 ADB Shell 命令,如 lscatpmgetpropdumpsys 等。命令执行失败可能返回空字符串或错误信息。

A: 某些命令可能需要特定的设备权限。建议先了解 Linux Shell 命令基础知识,并在 ADB Shell 中手动验证命令。

A: 执行时间较长的命令可能会导致超时。建议拆分耗时操作,或避免在单条命令中执行长时间阻塞的任务。