Click Something and Waiting

在我們點擊網頁上的元件後,會有所期待某些事件的發生,不曉得你是否有遇到如下圖的問題呢?

如同圖片所顯示,在Click Link後,預期出現的東西並沒出現,反而丟出讀取頁面失敗的訊息。神奇的是,這測試案例並不是每次跑都會失敗,難道是Selenium在搞我們嗎?

眼尖的鄉民可以發現,在Click Link最後面有個don't wait。假如你查SeleniumLibrary可以發現Keyword宣告,有dont_wait=的參數。這代表的意義是: 「在執行Click動作後,是否要等待頁面讀取」。

Click Link | locator, dont_wait= 

讓我做個整理,

  1. Click某個元件後,如果不會重新讀取頁面(如透過ajax變更內容),請宣告don't wait。反之拿掉或者使用Wait Until Page Loaded。
  2. 等待頁面讀取的timeout由Import SeleniumLibrary參數或Set Selenium Timeout決定,預設是5秒鐘。

最常使用的Click Element也有don't wait參數,但不是每一個Click的Keyword都有喔! Flex相關的keyword如Click Flex Element就沒這個參數,因為不需要麻!

友藏內心獨白: 透過Review Code也是可以找到題材的。