无法在 RobotFramework 中存储变量值

Cannot store variable values at RobotFramework

例如,我们有:

Get ticket value
        Wait Until Element is Visible    ${ticketDescription}
        ${ticketDescValue}=    Execute Javascript    return window.document.querySelector('p[class*="ticket-description"]').innerHTML.toString()


Verify if ticket value matches
       Element Text Should Be    ${some_locator}    ${ticketDescValue}

其中,${ticketDescValue} 是预期的文本

测试用例示例:

*** Test Cases ***
Ticket value is correct
    [Documentation]    OK: test test test
    [Tags]    Add to basket
    Go to some URL
    Get ticket value
    Navigate to product details page
    Verify if ticket value matches

有什么方法可以在现有关键字之间共享变量吗? 在 Java 中,我可以为这种情况使用 getter 和 setter。 或向方法发送参数等...

如何使用Robot Framework实现?

您需要在赋值行之后使用类似于以下内容的内容将变量值设置为全局变量或套件变量:

 Set Suite Variable    ${ticketDescValue}

或者,您可以 return 来自第一个关键字的变量并将其作为参数传递给第二个关键字

更好的方法是将 Get ticket value 关键字修改为 return 参数,并将 Verify if ticket value matches 关键字修改为将门票值作为参数。这样你就不需要使用全局变量了。

Get ticket value
    Wait Until Element is Visible    ${ticketDescription}
    ${ticketDescValue}=    Execute Javascript    return window.document.querySelector('p[class*="ticket-description"]').innerHTML.toString()
    [Return]    ${ticketDescValue}

Verify if ticket value matches
   [Arguments]    ${value}
   Element Text Should Be    ${some_locator}    ${value}

那么您的测试将如下所示:

*** Test Cases ***
Ticket value is correct
    [Documentation]    OK: test test test
    [Tags]    Add to basket
    Go to some URL
    ${ticket value}=    Get ticket value
    Navigate to product details page
    Verify if ticket value matches    ${ticket value}

我将所有参数名称设为不同,以强调它们不必完全相同 - 但如果需要,您可以将它们全部设为相同。