Robotframework 升级Python和Robot框架版本后获取变量访问错误
下面提到的脚本已经在旧python(2.7.x)和Robotframework版本中使用。 在将python版本从2.7升级到3.7.2,并将robot版本升级到3.1.1之后,同样的代码没有得到处理 我在执行脚本时遇到此错误: 变量“${var}”是字符串,而不是列表或字典,因此 无法从中访问项目“${var}”。 代码:Robotframework 升级Python和Robot框架版本后获取变量访问错误,robotframework,Robotframework,下面提到的脚本已经在旧python(2.7.x)和Robotframework版本中使用。 在将python版本从2.7升级到3.7.2,并将robot版本升级到3.1.1之后,同样的代码没有得到处理 我在执行脚本时遇到此错误: 变量“${var}”是字符串,而不是列表或字典,因此 无法从中访问项目“${var}”。 代码: ${loc} xpath=(//*[contains(@class,"c3-legend-item ")]) : FOR ${row} IN RANGE
${loc} xpath=(//*[contains(@class,"c3-legend-item ")])
: FOR ${row} IN RANGE 1 ${Count}
\ ${Exp_Name} = Get Text ${loc}[${row}]
\ Log ${Exp_Name}
使用catenate构建动态xpath。这对您很有用
${loc} xpath=(//*[contains(@class,"c3-legend-item ")])
: FOR ${row} IN RANGE 1 ${Count}
\ ${dynamic_xpath}= Catenate SEPARATOR= ${loc} [${row}]
\ ${Exp_Name} = Get Text ${dynamic_xpath}
在robot版本3.1中有一个向后不兼容的更改。从: 像${var}[xxx]这样的变量后面的方括号被视为项目访问 像${var}[xxx]这样的语法现在被认为是变量项访问(#2601),而不是后跟文字字符串[xxx]的变量${var}。如果需要后者,则需要类似${var}[xxx]的转义 在您的特定情况下,您使用的是
${loc}[${row}]
,您希望[${row}]
附加到${loc}
。在3.1中,robot认为[${row}]
是${loc}
的索引
正如发行说明中所建议的,修复方法是脱离开口方括号:
\ ${Exp_Name} = Get Text ${loc}\[${row}]