You need to enable JavaScript to run this app. Robot Framework 4.0 用索引取${}多值变量返回字符的异常问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework 4.0 用索引取${}多值变量返回字符的异常问题咨询

问题产生的根本原因

变量定义的类型逻辑偏差

你在*** Variables ***表中定义的${BROWSERSIZE}是标量变量,这类变量的赋值规则是:不管后面跟多少个空格分隔的单元格内容,最终都会被拼接成一个带空格的单字符串。也就是说你实际存储的变量值不是包含两个独立数值的列表,而是完整的字符串"1400 900"。

索引操作的作用结果匹配

你使用的[n]索引语法,会直接对变量实际存储的值做类型适配的访问:

  • 字符串本身是由单个字符组成的可迭代序列,对"1400 900"这个字符串做[0]索引,取到的就是第一个字符"1";做[1]索引,取到的就是第二个字符"4",和你看到的运行输出完全一致。
  • 官方手册中提到的索引可拆分独立值的场景,前提是变量实际存储的是列表、元组这类可索引的序列结构,而非拼接生成的字符串。
正确实现视口大小取值的方案
  • 方案1:改用列表变量存储多值,直接适配索引语法
    在变量表中将变量前缀从$改为@,空格分隔的两个值会自动成为列表的独立元素:
    *** Variables ***
    @{BROWSERSIZE}    1400    900
    
    此时原日志语句运行后,就会正常输出:Size: 1400 900, Width:1400 Height:900
  • 方案2:如果必须用标量变量存储,需要显式构造列表结构
    不要靠多空格直接给标量变量赋值,可在测试流程中通过Create List关键字生成真实的列表对象再赋值给标量:
    *** Variables ***
    ${BROWSERSIZE}    ${None}
    
    *** Test Cases ***
    初始化视口大小变量
        ${BROWSERSIZE}=    Create List    1400    900
        Log To Console    Size: ${BROWSERSIZE}, Width:${BROWSERSIZE}[0] Height:${BROWSERSIZE}[1]
    
通用避坑提示

很多新手容易混淆两种变量的赋值规则:

  • 带@前缀的列表变量,每个空格分隔的单元格会自动成为列表的独立元素
  • 带$前缀的标量变量,多个空格分隔的单元格只会被拼接为单个字符串,不会自动转换为列表结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 10:54:00