Robot framework 引入 Selenium2Library 類庫:
在用robotframework-selenium2library做web自動化測試時候,首先要將Selenium2Library導入到Test Suite中,在導入Selenium2Library時可以指定以下可選參數:
timeout=5.0
implicit_wait=0.0
run_on_failure=Capture Page Screenshot
screenshot_root_directory=None
導入Selenium2Library庫時,設置timeout參數值為0。
*** Settings ***
Library Selenium2Library timeout=0
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Wait Until Element Is Visible link=退出
Click Element link=退出
Close Browser
在測試用例中通過關鍵字Set SeleniumTimeout設置參數值為0。
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Set Selenium Timeout 0
Wait Until Element Is Visible link=退出
Click Element link=退出
Close Browser
在使用Wait Until Element IsVisible關鍵字時指定timeout參數值為0。
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Wait Until Element Is Visible link=退出 timeout=0
Click Element link=退出
Close Browser
如果三種方式對timeout參數設置了不同的值,根據就近原則關鍵字參數中設置的timeout參數會對當前關鍵字生效,但是通過導入參數和通過Set SeleniumTimeout設置參數改變的是全局的timeout值。
個人認為在實際的通常項目的測試過程中全局默認的5s超時時間比較合理,所以不需要在導入Selenium2Library庫時指定timeout參數,也不需要通過Set SeleniumTimeout在測試用例中修改timeout參數值,當特殊的測試測試步驟或者測試場景需要修改timeout參數值時,可以通過在關鍵字中指定timeout參數值使其在局部生效。
implicit_wait
implicit_wait是selenium查找元素時的一個隱含超時時間,默認值為0。對上面的用例做一點修改,不采用Wait Until Element Is Visible來判斷元素是否可見,而直接操作元素,用例腳本如下:
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Click Element link=退出
Close Browser
執行測試用例時會報查找不到元素的錯誤,因為在執行Click Element link=退出 時頁面還沒加載完成,implicit_wait的值為0,selenium在查找不到元素時立刻返回錯誤。
我們在導入selenium庫時將implicit_wait設置為5秒,用例腳本如下:
*** Settings ***
Library Selenium2Library implicit_wait=5
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Click Element link=退出
Close Browser
再次執行用例腳本可正常執行。
也可以通過關鍵字Set Selenium Implicit Wait來設置全局的implicit_wait值,如下用例腳本也能正常執行。
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Set Selenium Implicit Wait 5
Click Element link=退出
Close Browser
個人認為在實際測試過程中不需要設置implicit_wait值,在對頁面或者元素進行操作前都通過Wait …關鍵字先判斷頁面是否加載完成或者元素是否可見,這樣測試腳本的健壯性會更好。
run_on_failure
當Selenium2Library某個關鍵字執行失敗時將指定運行關鍵字run_on_failure。
*** Settings ***
Library Selenium2Library run_on_failure=Capture Page Screenshot
默認可以使用Capture Page Screenshot來截取當前頁面內容。使用值’Nothing’可以完全禁用該功能。
screenshot_root_directory
screenshot_root_directory指定了Capture Page Screenshot關鍵字截取頁面圖片的存放路徑。如果沒有指定那么截圖圖片會默認存放在robotframework日志文件存放路徑。
1,Sleep
一個線程等待的邏輯,進程等待N秒后再運行;
2,Implicit Wait
隱式等待,Get Selenium Implicit Wait 與 Set Selenium Implicit Wait分別是取隱式等待時間與設置隱式等待時間;隱式等待,在一定時間內找到元素則馬上運行,如果超過規定時間,則會報錯。
(1)Get Selenium Implicit Wait 默認獲取的時間為0秒;
(2)Set Selenium Implicit Wait 默認設置的時間也為0秒,用在下一步動作之前;
3,Speed
這個關鍵字是為了減慢執行,讓調試的時候能看清執行。提供了Get Selenium Speed 與 Set Selenium Speed兩個關鍵字;
4,Timeout 全局超時時間
默認值為5秒,提供的關鍵字有:Get Selenium Timeout 與 Set Selenium Timeout;
全局超出時間同樣可以在引入Selenium2Library 的時候設置
Robotframework關於等待時間的關鍵字
5,等待關鍵字都與timeout息息相關
后面跟隨的參數如果不填,則為timeout的全局超出時間;
Wait Until Element Contains 等待元素匹配
Wait Until Element Is Enabled 等待元素可用
Wait Until Element Is Visible 等待元素可見
Wait Until Page Contains 等待頁面內容匹配
Wait Until Page Contains Element 等待頁面元素匹配