2017-05-26 238 views
3

我是Robot Framework的新手,我试图使用Run Keyword If .. ELSE ..Robot Framework运行关键字如果..否则失败

应该怎么做:
添加一个新的关键字来检查页面是否包含单词“closed”。如果有,请刷新页面。如果不是,请单击元素“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} 

当我运行它,会发生什么:
“封闭”没有出现在页面中。 “this”被点击。那么测试失败,因为:
Page should have contained element 'xpath=//*[text()='Closed']' but did not

请帮我纠正它。

编辑:更改Page Should ContainPage Should Contain Element。相同的结果。

回答

4

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


什么有效的情况是,在这条线

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

您分配值${ClickThis} - 这是什么,${None},为Click Element不返回值。

在这条线,你又分配${Closed}Page Should Contain

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

,这是不返回值你期望它 - 这本身无论是关键字失败(如在你的情况下),如果文本不在那里,或者默默地经过;但不返回一个值。

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

现在${Closed}: -

所以,去尝试完成,使用Run Keyword And Return status对于“页面应该包含”什么将根据包裹关键字的退出状态返回真/假如果文本在页面中,则其值为${True},否则为${False};使用在Run Keyword If块,传递关键字作为第二个参数:

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

它的工作就像一个魅力!谢谢你解释它。 – Tea000

相关问题