這是本文件的舊版!
Migrate SeleniumLibrary to Selenium2Library
Introduction
分享從SeleniumLibrary(SL1)升級到Selenium2Library(SL2)的歷程與方法。
Browser
由於SL1與SL2支援的瀏覽器版本有差異存在,有考慮過使用portable的firefox,但發現難以支援所有需要的作業系統。因此最無痛的方式,就是透過Remote Selenium,可參考此篇教學。
Implement A Wrapper
SL1與SL2 Keyword有不少差異存在。而升級到SL2的過程,並非一蹴可幾。因此我透過一個SeleniumLibraryWrapper,讓Keyword的呼叫使用共同的介面,而要使用SL1或SL2則由各別Keyword決定。方法如下:
- Import Selenium Library: 偵測要使用的Selenium版本,並設定為Global Variable。
- Keyword Wrapper: 透過判斷版本的結果,去決定要使用SL1或SL2的Keyword。
Import Selenium Library
由於SL1不相容於2.9以上版本的RobotFramework,而SL2必須用2.9以上版本。因此我們可以透過判斷2.9版本以上才支援的keyword是否存在,來確認Selenium環境,接著再匯入各別版本的SeleniumLibrary。
Bridge Keyword
我以Click Element為例。Click Element在SL1中,接收${locator}、${dont_wait}與${coordinates}三個參數,而SL2只接受${locator}。如果要將SL1轉到SL2,針對${dont_wait}可選擇略過;${coordinates}則要改用Click Element At Coordinates。由於我沒用到${coordinates},所以我僅以${dont_wait}做範例:
其它Keyword也是用類似的方法,至於要做到什麼程度,看你們的需求而定了。
Changes
這部分針對Keyword行為改變做說明,這是要補充官方沒列到的:
無法操作invisible的項目
SL2中,如果操作畫面上沒顯示的項目就會丟錯。如果真的要操作,可以採取的措施是改用Javascript呼叫操作。
Textfield Value Should Be
在SL1中,這個Keyword是可以做text與textarea的驗證。而在SL2則分為Textfield Value Should Be與Textarea Value Should Be,因此如果原本針對textarea的驗證,必須改為Textarea Value Should Be或改用Get Value再做assert。
Select From List
在SL1中,原先可以透過index=value的方式找尋我要的項目。而在SL2後,就要改用Select From List By Value。
Reference