You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同OS版本Android设备上Robot Framework自动化脚本运行异常问题

解决Robot Framework+Appium多设备自动化重复执行与8.0设备启动失败问题

你遇到的核心问题是设备信息和系统版本没有正确绑定,导致循环时重复使用了同一个系统版本变量,同时8.0设备的配置参数没有被正确传递。下面分步骤帮你排查和解决:

1. 问题根源分析

你当前的循环只遍历了@{DEVICES}列表里的设备名,但${osVersion}是一个独立的变量——它不会自动跟着设备循环更新,所以两次循环都用了同一个${osVersion}值(比如第一台设备的6.0),而第三台8.0设备根本没拿到对应的系统版本参数,自然启动失败。

2. 修复方案:绑定设备名与系统版本

你需要把每个设备的deviceName和osVersion配对,让循环时能同时获取对应的值。这里提供两种常用的实现方式:

方式一:用分隔字符串存储配对信息

先在变量里定义设备和版本的配对:

*** Variables ***
# 用|分隔设备名和系统版本
@{DEVICES_WITH_OS}    设备1|6.0    设备2|6.0    设备3|8.0

然后修改循环逻辑,每次拆分字符串获取对应参数:

:FOR ${device_info} IN @{DEVICES_WITH_OS} \
\    ${deviceName}    ${osVersion}=    Split String    ${device_info}    | \
\    Open Application    http://localhost:4444/wd/hub    platformName=Android    deviceName=${deviceName}    platformVersion=${osVersion}    app=app-debug.apk    automationName=appium    appActivity=com.example.android.logindemo.MainActivity

方式二:用字典列表存储完整设备配置

这种方式更清晰,适合后续扩展更多参数:

*** Variables ***
&{DEVICE1}    deviceName=设备1    osVersion=6.0
&{DEVICE2}    deviceName=设备2    osVersion=6.0
&{DEVICE3}    deviceName=设备3    osVersion=8.0
@{DEVICES}    &{DEVICE1}    &{DEVICE2}    &{DEVICE3}

循环时直接从字典里取值:

:FOR ${device} IN @{DEVICES} \
\    Open Application    http://localhost:4444/wd/hub    platformName=Android    deviceName=${device}[deviceName]    platformVersion=${device}[osVersion]    app=app-debug.apk    automationName=appium    appActivity=com.example.android.logindemo.MainActivity

3. 针对8.0设备的额外排查点

如果修复绑定后8.0设备仍无法启动,建议检查以下几点:

  • 自动化引擎适配:Android 8.0及以上推荐使用UiAutomator2作为automationName,而不是默认的appium(实际对应UiAutomator1)。可以根据系统版本动态设置:
    :FOR ${device_info} IN @{DEVICES_WITH_OS} \
    \    ${deviceName}    ${osVersion}=    Split String    ${device_info}    | \
    \    ${automationName}=    Set Variable If    ${osVersion} >= 8.0    UiAutomator2    UiAutomator1 \
    \    Open Application    http://localhost:4444/wd/hub    platformName=Android    deviceName=${deviceName}    platformVersion=${osVersion}    app=app-debug.apk    automationName=${automationName}    appActivity=com.example.android.logindemo.MainActivity
    
  • 设备连接状态:执行adb devices确认第三台8.0设备已正常连接,并且没有授权弹窗未处理。
  • Appium日志排查:查看Appium服务的日志输出,重点看启动8.0设备时的错误信息——比如是否存在APK安装失败、目标Activity找不到、权限被拒绝等问题。

内容的提问来源于stack exchange,提问作者Rena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:24:43