一:基礎
在實際使用selenium或者appium時,等待下個等待定位的元素出現,特別是web端加載的過程,都需要用到等待,而等待方式的設置是保證腳本穩定有效運行的一個非常重要的手段,在selenium中(appium通用)常用的等待分為顯示等待WebDriverWait()、隱式等待implicitly_wait()、強制等待sleep()三種,下面我們就分別介紹一下這三種等待的區別
sleep(): 強制等待,設置固定休眠時間。后腳本的執行過程中執行 sleep()后線程休眠,而另外兩種線程不休眠。
implicitly_wait():隱式等待,是設置的全局等待。設置等待時間,是對頁面中的所有元素設置加載時間,如果超出了設置時間的則拋出異常。隱式等待可以理解成在規定的時間范圍內,瀏覽器在不停的刷新頁面,直到找到相關元素或者時間結束。
WebDriverWait():顯示等待,是針對於某個特定的元素設置的等待時間,在設置時間內,默認每隔一段時間檢測一次當前頁面某個元素是否存在,如果在規定的時間內找到了元素,則直接執行,即找到元素就執行相關操作,如果超過設置時間檢測不到則拋出異常。默認檢測頻率為0.5s,默認拋出異常為:NoSuchElementException
二:面試題
selenium中的 顯示等待和隱式等待有何區分?如果隱式等待的時間大於顯示等待的時間 會有什么影響?
若同時設置了隱式等待和顯示等待,則以隱式等待為第一優先級,也就是說,若隱式等待時間大於顯示等待,則執行顯示等待時,顯示等待時間設置無效,因為driver若找不到元素,會先等待隱式等待的時間。