顯示等待、隱式等待和強制等待的區別


  在實際使用selenium或者appium時,等待下個等待定位的元素出現,特別是web端加載的過程,都需要用到等待,而等待方式的設置是保證腳本穩定有效運行的一個非常重要的手段,在selenium中(appium通用)常用的等待分為顯示等待WebDriverWait()隱式等待implicitly_wait()強制等待sleep()三種,下面我們就分別介紹一下這三種等待的區別

  • sleep(): 強制等待,設置固定休眠時間。后腳本的執行過程中執行 sleep()后線程休眠,而另外兩種線程不休眠
  • implicitly_wait():隱式等待,是設置的全局等待。設置等待時間,是對頁面中的所有元素設置加載時間,如果超出了設置時間的則拋出異常。隱式等待可以理解成在規定的時間范圍內,瀏覽器在不停的刷新頁面,直到找到相關元素或者時間結束。
  • WebDriverWait():顯示等待,是針對於某個特定的元素設置的等待時間,在設置時間內,默認每隔一段時間檢測一次當前頁面某個元素是否存在,如果在規定的時間內找到了元素,則直接執行,即找到元素就執行相關操作,如果超過設置時間檢測不到則拋出異常。默認檢測頻率為0.5s,默認拋出異常為:NoSuchElementException。

 

 WebDriverWait() 語法格式如下:

 

WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until(self,method,message=)

或者
WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until_not(self,method,message=)

self, 函數本身,在實際使用的時候不需要輸入

driver, webdriver的驅動程序,如(IE、FireFox、chrome、safari等)
timeout,超時時間,默認以秒為單位
poll_frequency,休眠時間(步長)的間隔,默認為0.5秒,即檢測元素是否存在的頻率
ignored_exceptions, 超時后的異常信息,默認情況下拋 “NoSuchElementException",大家可以定義忽略的異常信息

WebDriverWait一般由until或until_not配合使用

until(method,message=")調用該方法提供的驅動程序做為一個參數,直到返回值不為False
until_not(method,message=")調用該方法提供的驅動程序做為一個參數,直到返回值為False


免責聲明!

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



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