机器人框架 - 条件循环在某处缺少参数?

问题描述 投票:0回答:1

我正在运行一个机器人框架测试用例,其中元素通过 CSV 文件输入到该用例中。其中一些元素会在新的浏览器选项卡中打开,而另一些则不会。我已经编写了一些逻辑来处理这些场景,并且直到最近它都运行得很好。我尝试围绕场景添加一些更明确的逻辑。现在,当我运行它时,我收到一条错误消息:Keyword 'BuiltIn.Run Keyword If'预期至少有 2 个参数,结果为 0。

我已经反复思考这个问题,但找不到我的问题出在哪里。这是我的代码,其中包含有问题的关键字,请让我知道我做错了什么。非常感谢!

Student Tab Scraper
    [Arguments]     ${csv_file}
    ${locator_list}=     Read Locators From File    ${csv_file}

    FOR  ${locator}  IN  @{locator_list}
        Wait For And Click Element    ${locator}

        ${handles}=     Get Window Handles
        ${num_handles}=     Get Length    ${handles}

        ${opened_in_new_tab}=    Run Keyword If    ${num_handles} > 1    Set Variable    ${True}    ${False}

        Run Keywords
            ...    Run Keyword If    '${opened_in_new_tab}' == 'True'
            ...    Log To Console    Opening link in new tab
            ...    Select Window    ${handles}[1]
            ...    Close Window
            ...    Select Window    ${handles}[0]
            ...    ELSE
            ...    Log To Console    Opening link in same tab
            ...    Wait For And Click Element    ${iunderstand}
        END
    END

browser robotframework ui-automation browser-automation
1个回答
0
投票

这里有一个语法错误:

${opened_in_new_tab}=    Run Keyword If    ${num_handles} > 1    Set Variable    ${True}    ${False}

事实上,是一对;您可能想在满足条件时将变量设置为 True,否则设置为 False。 第一个错误是您没有使用

ELSE
来界定第二个块 - 如果您想要“条件不满足”块,则应该存在它。

另一个是 - 即使它存在,也没有要执行的关键字,只是传递了布尔值 False。当框架运行它时,它会看到“当条件满足时运行

Set Variable ${True}
”,但当不满足时 - “只是错误”。该怎么办?它也不是一个关键字,只是一个值,如何运行一个值呢? 因此,语法错误。

固定版本如下所示:

${opened_in_new_tab}=    Run Keyword If    ${num_handles} > 1    Set Variable    ${True}   ELSE    Set Variable   ${False}

对于这种情况 - 只是设置一个变量,有一个更好的关键字可以使用,

Set Variable If
,它甚至不使用 ELSE 关键字作为后备块。
有了它,它看起来像这样:

${opened_in_new_tab}=    Set Variable If    ${num_handles} > 1       ${True}    ${False}

半不相关,

Run Keyword If
已被弃用,您可能需要使用
IF
代替它(在这种情况下它是一个直接替代品)。

© www.soinside.com 2019 - 2024. All rights reserved.