2017-05-26 9 views
3

私はRobot Frameworkを初めて使用しており、Run Keyword If .. ELSE ..を使用しようとしています。ロボットフレームワークキーワード実行.. ELSEが失敗する場合

するべきこと:
ページに「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} 


は、「クローズ」ページには表示されません。 「これ」がクリックされます。 、それを修正するには、私を助けてください
Page should have contained element 'xpath=//*[text()='Closed']' but did not

:ので、次にテストが失敗しました。

編集:変更Page Should ContainPage Should Contain Element同じ結果。

答えて

4

ELSEの後の引数は別のキーワードにする必要があります。効果的に何が起こった


あなたは${ClickThis}に値を割り当てたこの行の

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

ということです - Click Elementが値を返さないよう、何も、${None}ではありませんています。この行で

、あなたは再びあなたはそれがない期待されていない、Page Should Contain

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

${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 ${Closed} Reload Page ELSE Click Element xpath=//*[@id="this"] 
+1

:第二引数としてキーワードを渡し、Run Keyword Ifブロックにそれを使用!それを説明していただきありがとうございます。 – Tea000

関連する問題