如何在Robot Framework中自动执行指定ADB命令?
自动执行ADB命令的Robot Framework实现方案
步骤1:编写Python函数封装ADB命令
创建一个Python文件(如adb_utils.py),用subprocess模块封装需要执行的ADB命令:
import subprocess def run_adb_commands(device_name): # 定义要执行的ADB命令序列 adb_cmds = [ f"adb -s {device_name} kill-server", f"adb -s {device_name} start-server", f"adb connect {device_name}", f"adb -s {device_name} uninstall io.appium.uiautomator2.server", f"adb -s {device_name} uninstall io.appium.uiautomator2.server.test" ] # 逐个执行命令 for cmd in adb_cmds: try: subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True) print(f"命令执行成功: {cmd}") except subprocess.CalledProcessError as e: print(f"命令执行失败: {cmd}, 错误信息: {e.stderr}")
步骤2:在Robot Framework中导入并调用函数
在你的Robot测试文件中,导入该Python模块,将函数作为自定义关键字使用:
*** Settings *** Library adb_utils.py Library AppiumLibrary *** Test Cases *** 示例自动化测试 # 先执行ADB修复命令 Run ADB Commands YOUR_WATCH_DEVICE_NAME # 启动Appium会话 Open Application http://localhost:4723/wd/hub ${desired_capabilities} # ...后续测试步骤
步骤3:集成到错误处理或前置操作
如果需要在测试失败时自动触发修复命令,可结合Robot的Run Keyword On Failure关键字:
*** Settings *** Library adb_utils.py Library AppiumLibrary *** Test Cases *** 带自动修复的测试用例 Run Keyword On Failure Run ADB Commands YOUR_WATCH_DEVICE_NAME Open Application http://localhost:4723/wd/hub ${desired_capabilities} # ...测试操作
也可以将修复命令放在套件/测试前置操作中,确保每次测试前执行:
*** Settings *** Library adb_utils.py Library AppiumLibrary Test Setup Run ADB Commands YOUR_WATCH_DEVICE_NAME *** Test Cases *** 测试用例1 Open Application http://localhost:4723/wd/hub ${desired_capabilities} # ...测试步骤
注意事项
- 确保Mac环境中已配置Android SDK环境变量,
adb命令可直接在终端执行 - 替换
YOUR_WATCH_DEVICE_NAME为实际设备名称(可通过adb devices命令获取) - 若需调整命令输出日志或错误处理逻辑,可修改Python函数中
subprocess.run的参数
内容的提问来源于stack exchange,提问作者user22747995
相关产品推荐
相关产品推荐

