為了解決這個問題,我們應該在 click button 關鍵字的后面加上 don't wait參數,這樣就不會出現500錯誤了。
click button |
xpath=//button[1] | don't wait |
修改后我們繼續運行一遍測試用例,沒有500錯誤出現,但這次卻出現了其他錯誤。
TestFail | FAIL |
Page should have contained text '本內容是使用 GET 方法請求的' but did not
這又是為什么呢?記住。Ajax的刷新是異步的,返回文字需要時間。而由于使用了don't wait參數,Robot Framework直接執行了下一個關鍵字 Page should contain,此時返回文字這時還沒有出現,自然會失敗。
這時候我們就用到了另外一個關鍵字 Wait Until Page Contains
我們將Page should contain 這一句換成下面這一句(第二個參數5000指的是等待5000毫秒,超過后就拋出超時錯誤)。
Wait Until Page Contains | 本內容是使用 GET 方法請求的 | 5000 |
拓展
上述的例子只是實現了最簡單的對Ajax的測試方法。由于JavaScript代碼能寫得各式各樣,因此測試用例的寫法也會不盡相同。但是本質上AJAX就兩個關鍵點:異步和動態DOM變更。只要抓住這2點,基本上什么都難不倒你了。下面的幾個關鍵字應該能搞定絕大部分AJAX測試:
Wait For Condition · Wait Until Page Contains · Wait Until Page Contains Element
尤其是Wait For Condition,由于能夠直接訪問JavaScript代碼,它異常強大,值得關注。