【RobotFramework】顯式等待、隱式等待、強制等待

我們在做UI自動化時,經常會遇到元素不可用或不可見的情況,除定位錯誤外,大部分原因是元素還未加載出來。

那麼如何解決此類問題呢?

這裏就用到了等待,今天主要基於RF的應用介紹常用的幾種等待方式。

一、強制等待

即達到等待時間後再執行操作,最爲常用、最簡單的等待方式。

缺點是:假設等待設置爲5s,不管1s還是2s內元素加載出來,也要等到5s後纔會執行下一步操作。

在RF中的關鍵詞是:Sleep

二、隱式等待

全局等待變量的設置,等待時間內會一直刷新頁面,直到元素加載出來爲止,所以會增加無效的等待時間。

如果超出等待時間,則會拋出異常。

在RF中對應的關鍵詞爲:

Get Selenium Implicit Wait【獲取默認等待時間】

Set Selenium Implicit Wait【設置隱式等待時間】

Set Browser Implicit Wait【設置隱式等待時間,僅影響當前瀏覽器】

三、顯式等待

局部等待變量設置,針對某個元素設置等待。

等待時間內會定時檢測某個元素是否存在或可用,然後再執行下一步操作。

由於針對單個元素,一些加載比較快的元素無需設置,可以針對加載慢的元素進行設置,相對來說可以減少等待時間,便於腳本高效執行。

超出等待時間,則拋異常。

在RF中的關鍵詞是:

Wait Until Element Contains【等待元素匹配

Wait Until Element Is Enabled 【等待元素可用】

Wait Until Element Is Visible 【等待元素可見】

Wait Until Page Contains 【等待頁面內容匹配】

Wait Until Page Contains Element 【等待頁面元素匹配】

上述關鍵字後邊加定位元素或文本等,當條件爲True時,執行下一步操作。

四、其它關於等待的設置

關鍵字:Get Selenium Speed 與 Set Selenium Speed

從Speed看的出,此關鍵字用於設置執行速度的,一般用於調試使用,真正執行時一般不會用到哦。

關鍵字:Get Selenium Timeout 與 Set Selenium Timeout

全局超時等待時間,默認爲5s,可根據需要進行設置,真正執行時一般不會用到哦。

    ${Implicit_time}    Get Selenium Implicit Wait
    log    ${Implicit_time}
    ${speed}    Get Selenium Speed
    log    ${speed}
    ${timeout}    Get Selenium Timeout
    log    ${timeout}

INFO : ${Implicit_time} = 0 seconds
INFO : 0 seconds
INFO : ${speed} = 0 seconds
INFO : 0 seconds
INFO : ${timeout} = 5 seconds
INFO : 5 seconds

可以看出SeleniumLibrary默認值:timeout=5,implicit_wait=0,selenium speed=0

設置全局的話可以再Suite中設置,與其它suite一起執行的話全局通用


在真正構建UI自動化時,使用那種等待方式需要結合自身產品的應用,選擇適合自己的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章