【问题标题】:Robot Framework Run Keyword If .. ELSE failsRobot Framework Run Keyword If .. ELSE 失败
【发布时间】:2017-10-27 05:05:46
【问题描述】:

我是 Robot Framework 的新手,我正在尝试使用 Run Keyword If .. ELSE ..

应该怎么做:
添加新关键字以检查页面是否包含“已关闭”一词。如果是,请刷新页面。如果没有,请单击元素“this”并继续该场景的其余部分。

*** Keywords ***
Check if anything is closed
    ${ClickThis}  Click Element  xpath=//*[@id="this"]
    ${Closed}  Page Should Contain Element  xpath=//*[text()='Closed']
    Run Keyword If  ${Closed} =='PASS'  Reload Page  ELSE  ${ClickThis}

当我运行它时会发生什么:
“已关闭”不会出现在页面中。点击“这个”。然后测试失败,因为:
Page should have contained element 'xpath=//*[text()='Closed']' but did not

请帮我纠正它。

编辑:将 Page Should Contain 更改为 Page Should Contain Element。结果相同。

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    ELSE 后面的参数应该是另一个关键字。


    实际上发生的是在这条线上

    ${ClickThis}  Click Element  xpath=//*[@id="this"]
    

    您已将值分配给 ${ClickThis} - 这没什么,${None},因为 Click Element 不返回值。

    在这一行中,您再次将 ${Closed} 的返回值分配给 Page Should Contain

    ${Closed}  Page Should Contain  xpath=//*[text()='Closed']
    

    ,这不是你所期望的——如果文本不存在,它本身的关键字要么失败(就像你的情况一样),要么默默地通过;但不返回值。

    因此,要达到您想要完成的目标,请使用 Run Keyword And Return status 作为“页面应包含” - 它会根据包装关键字的退出状态返回 True/False:

    ${Closed}=  Run Keyword And Return Status  Page Should Contain  xpath=//*[text()='Closed']
    

    现在${Closed} 的值将是${True} 如果文本在页面中,则${False} 否则;在 Run Keyword If 块中使用它,将 keyword 作为第二个参数传递:

    Run Keyword If    ${Closed}  Reload Page    ELSE    Click Element  xpath=//*[@id="this"]
    

    【讨论】:

    • 它就像一个魅力!谢谢你的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多