【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自動化時,使用那種等待方式需要結合自身產品的應用,選擇適合自己的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM