我是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
。相同的结果。
答案 0 :(得分:4)
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
块中使用它,传递关键字作为第二个参数:
Run Keyword If ${Closed} Reload Page ELSE Click Element xpath=//*[@id="this"]