在Robot Framework中将项添加到列表变量

时间:2017-03-10 16:49:00

标签: python-2.7 selenium robotframework selenium2library

我有这个代码,我试图循环通过类似的Xpath来获取他们的文本,并使用机器人农场工作将文本值添加到列表中

: FOR    ${i}    IN RANGE    2    ${count}+1
\  sleep  10s
\  ${j}   Get Text    //*[@id="stats"]/div/div/div[2]/div/div/div/div[${i}]/div[1]
\  Append To List     @{dbws_datapoints}    ${j}
\  log  @{dbws_datapoints}[${j}]

代码执行没有错误,但它没有打印列表,它在日志文件中记录结果如下

FOR $ {i} IN RANGE [2 | $ {count} +1]

我也附上截图。 Result file Image

Test Script Image

请帮忙

2 个答案:

答案 0 :(得分:2)

将列表称为对象时使用$

Append To List    ${dbws_datapoints}  ${j}
...
log  ${dbws_datapoints}[${j}]

有关详细信息,请参阅机器人用户指南中的List Variables

答案 1 :(得分:0)

虽然您链接的图片提供了上下文,但在您的问题中放置文本版本总是好的。此外,预计它将提供一个最小的例子,不依赖于未提供的项目。 xpath和Get Text关键字是这里的示例。

正如@Bryan Oakley已经提到的,你的问题的核心似乎应该是@{} ${}。此外,您需要更新变量引用,因为它应该在花括号示例中:${var[2]}。在您的示例中,您从2开始循环。使用列表时会出现问题,因为添加到新列表的项目始终以0开头。因此,添加了一行来计算列表中的项目。

以下示例代码工作在日志文件中提供所需的条目。

*** Settings ***
Library    String
Library    Collections

*** Variables ***
${count}              5
@{dbws_datapoints}    

*** Test Cases ***
FOR LOOP
    : FOR    ${i}    IN RANGE    0    ${count}
    \  ${j}   Get Text    ${i}
    \  ${listCount}    Get Length    ${dbws_datapoints}
    \    
    \  Run Keyword If    (${i}>2)     Append To List     ${dbws_datapoints}    ${j}
    \  Run Keyword If    (${i}>2)     Log To Console  ${dbws_datapoints[${listCount}]}

*** Keywords ***
Get Text
    [Arguments]    ${i}
    ${list}    Create List    aaa    bbb    ccc    ddd    eee
    [Return]    ${list[${i}]}