Robotframework,如何定义动态变量名

Jin*_* Yu 4 dynamic-variables robotframework rpa

我想定义具有动态名称的变量。

例如

${${FILE}{VAR}}    Create List      // ${FILE} = TEST, ${VAR} = VAR
Run Code Online (Sandbox Code Playgroud)

然后我想获取名为 的变量'${TESTVAR}'

这是我总结的代码...

*** Settings ***

Library    SeleniumLibrary

Library    ExcelLibrary

Library    Collections

*** Variables ***

${VAR}=     VAR

*** Keywords ***

Open Document And Assign Variable

    [Arguments]     ${FILE}

    Open Excel Document filename=${FILE}    doc_id=doc_var


    ${${FILE}${VAR}}    Create List    # It doesn't work ..
Run Code Online (Sandbox Code Playgroud)

CrA*_*D0g 5

前面的答案并不准确。\n这可以通过机器人的“变量内变量”功能来精确实现,如下所示:

\n
FOR  ${idx}  IN RANGE  3\n   ${var_name} =  Catenate  SEPARATOR=_  var  ${idx}\n   Set Suite Variable  ${${var_name}}  ${idx}\nEND\n
Run Code Online (Sandbox Code Playgroud)\n

你得到:
\n\xc2\xa0\xc2\xa0\xc2\xa0var_1=1
\n\xc2\xa0\xc2\xa0\xc2\xa0var_2=2
\n\xc2\xa0\xc2\xa0\xc2\xa0var_3= 3

\n

请注意,变量解析仅针对关键字参数进行(至少对于我正在使用的机器人版本 3.1.2),因此“设置测试变量”、“设置套件变量”或“设置全局变量”关键字之一必须是用过的。以下内容将不起作用:

\n
FOR  ${idx}  IN RANGE  3\n   ${var_name} =  Catenate  SEPARATOR=_  var  ${idx}\n   ${${var_name}} =  ${idx}\nEND\n
Run Code Online (Sandbox Code Playgroud)\n

结果为:
\n\xc2\xa0\xc2\xa0\xc2\xa0 未找到名称为“${${var_name}} =”的关键字。

\n

对于您的列表情况,您只需要创建一个列表变量并使用上述关键字将其重新分配给动态命名的变量

\n