无法在RobotFramework中存储变量值

时间:2015-12-01 13:55:36

标签: python selenium selenium-webdriver 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实现它?

2 个答案:

答案 0 :(得分:1)

您需要在分配行后使用类似下面的内容将变量值设置为Global或suite变量:

 Set Suite Variable    ${ticketDescValue}

或者,您可以从第一个关键字返回变量,并将其作为参数传递给第二个关键字

答案 1 :(得分:0)

更好的方法是修改Get ticket value关键字以返回参数,并使用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}

我使所有参数名称都不同,以强调它们不必完全相同 - 但如果你愿意,你可以使它们完全相同。