Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Robotframework 升级Python和Robot框架版本后获取变量访问错误_Robotframework - Fatal编程技术网

Robotframework 升级Python和Robot框架版本后获取变量访问错误

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

下面提到的脚本已经在旧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    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}]