【selenium】強制等待,隱式等待,顯式等待
在實際使用selenium或者appium時,等待下個等待定位的元素出現,特別是web端載入的過程,都需要用到等待,而等待方式的設定是保證指令碼穩定有效執行的一個非常重要的手段,在selenium中(appium通用)常用的等待分為顯示等待WebDriverWait()、隱式等待implicitly_wait()、強制等待sleep()三種,下面我們就分別介紹一下這三種等待的區別
強制等待
sleep(): 強制等待,設定固定休眠時間。指令碼的執行過程中執行 sleep()後執行緒休眠。
隱式等待
implicitly_wait():隱式等待,是設定的全域性等待。設定等待時間,是對頁面中的所有元素設定載入時間,如果超出了設定時間的則丟擲異常。隱式等待可以理解成在規定的時間範圍內,瀏覽器在不停的重新整理頁面,直到找到相關元素或者時間結束。
# 導包-selenium
from selenium import webdriver
# 匯入時間包
from time import sleep
# 例項化物件-火狐瀏覽器
driver=webdriver.Firefox()
# 呼叫隱式等待
driver.implicitly_wait(10)
url="E:\\雙元\\Web自動化\\02_其他資料\\註冊A.html"
# 開啟url
driver.get(url)
driver.find_element_by_css_selector("#userA").send_keys("admin")
driver.find_element_by_css_selector("#passwordA").send_keys("123456")
sleep(3)
# 關閉瀏覽器
driver.quit()
顯式等待
WebDriverWait():顯式等待,是針對於某個特定的元素設定的等待時間,在設定時間內,預設每隔一段時間檢測一次當前頁面某個元素是否存在,如果在規定的時間內找到了元素,則直接執行,即找到元素就執行相關操作,如果超過設定時間檢測不到則丟擲異常。預設檢測頻率為0.5s,預設丟擲異常為:NoSuchElementException
實現步驟
1. 導包 等待類 --> from selenium.webdriver.support.wait import WebDriverWait
2. 導包 判斷條件 --> from selenium.webdriver.support import expected_conditions as EC
(將expected_conditions 通過as關鍵字起個別名:EC)
3. WebDriverWait(driver, timeout, poll_frequency=0.5)
1). driver:瀏覽器物件
2). timeout:超時的時長,單位:秒
3). poll_frequency:檢測間隔時間,預設為0.5秒
4. 呼叫方法 until(method):直到..時
1). method:呼叫EC.presence_of_element_located(element)
element:呼叫By類方法進行定位
# 導包-selenium
from selenium import webdriver
# 匯入顯示等待類
from selenium.webdriver.support.wait import WebDriverWait
# 匯入預期條件類 as 關鍵字起個別名為:EC
from selenium.webdriver.support import expected_conditions as EC
# 匯入By類
from selenium.webdriver.common.by import By
# 匯入時間包
from time import sleep
# 例項化物件-火狐瀏覽器
driver=webdriver.Firefox()
url="E:\\雙元\\Web自動化\\02_其他資料\\註冊A.html"
# 開啟url
driver.get(url)
element=WebDriverWait(driver,30).until(EC.presence_of_element_located((By.ID,'userA')))
element.send_keys("admin")
sleep(3)
# 關閉瀏覽器
driver.quit()
參考連結:
https://www.cnblogs.com/zf612326/p/9309943.html
相關文章
- selenium(7)強制等待,顯式等待和隱式等待。
- selenium隱式等待
- Selenium 隱式等待與顯示等待的選擇
- 強制等待
- Selenium等待事件Waits事件AI
- Selenium等待條件
- Selenium的等待操作
- ruby webdriver 顯性等待、隱性等待、內部超時處理Web
- Python_Selenium的等待操作Python
- selenium-三種等待方式
- 一定要會用selenium的等待,3種等待方式解讀
- Selenium裡的三種等待方式
- 細說selenium的等待條件
- 細說 selenium 的等待條件
- selenium中的三種等待方式
- Python selenium 三種等待元素方式Python
- Python Selenium自動化測試框架 元素等待機制Python框架
- python selenium的三種等待方式解讀Python
- 『心善淵』Selenium3.0基礎 — 23、Selenium的元素等待
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- Java併發之等待/通知機制Java
- 學會等待
- 等待解決
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之日誌等待“log file sync”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- arcgis api for js回撥函式如何等待同步APIJS函式
- 【TUNE_ORACLE】等待事件之日誌等待“log file parallel write”Oracle事件Parallel
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- 多執行緒之等待通知機制執行緒
- Solidity事件,等待事件Solid事件
- 執行緒間通訊_等待/通知機制執行緒
- MySQL中的Statistics等待MySql
- CXPACKET等待型別分析型別