在Selenium自動化測試中,等待元素加載是非常重要的一個環節。為了更好的控制頁面元素的等待時間,Selenium提供了兩種等待方式:顯示等待和隱式等待。本文將從多個方面分析顯示等待和隱式等待的區別。
一、顯示等待 vs. 隱式等待
顯示等待和隱式等待是Selenium中兩種控制等待時間的方式。其中,顯示等待是針對某一個具體元素的等待操作,而隱式等待則是對整個頁面的等待操作。
二、代碼示例1:顯示等待
# 導入必要的模塊
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# 設置等待時間
wait = WebDriverWait(driver, 10)
# 使用顯式等待等待元素加載完成
element = wait.until(EC.presence_of_element_located((By.ID,'element_id')))
上述代碼的意思是在10秒內,等待id=’element_id’的元素出現,如果10秒鐘後還沒有出現,則會拋出異常TimeoutException。
三、代碼示例2:隱式等待
# 導入必要的模塊
from selenium import webdriver
# 設置等待時間
driver.implicitly_wait(10)
# 訪問網頁
driver.get('https://www.example.com')
# 查找元素
element = driver.find_element_by_id('element_id')
上述代碼的意思是在整個頁面中等待10秒鐘,如果10秒鐘內還沒有把需要的元素渲染出來,則會拋出異常NoSuchElementException。
四、等待時間的控制
顯示等待和隱式等待的一個明顯的區別就是等待時間的控制方式不同,一個是通過等待元素的出現與否,一個是通過等待整個頁面的加載。
另外,隱式等待是默認存在的,如果我們不手動設置,就會默認等待0秒鐘。而顯示等待需要通過代碼來進行手動設置等待時間。
五、不同的預期條件
隱式等待設置等待時間後會在整個頁面中進行監測,如果10秒鐘內沒有加載完畢,則會返回NoSuchElement錯誤。
相較而言,顯示等待根據不同的預期條件來進行判斷等待是否完成。可以選擇不同的判斷條件,比如判斷元素是否出現,或者判斷元素是否可見等。這也是顯示等待和隱式等待的一個明顯的區別。
六、代碼示例3:不同的預期條件
# 導入必要的模塊
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# 等待元素出現
element = wait.until(EC.presence_of_element_located((By.ID,'element_id')))
# 等待元素可見
element = wait.until(EC.visibility_of_element_located((By.ID,'element_id')))
上面的示例代碼中,使用ExpectedConditions類來判斷元素是否出現或者是否可見,具體使用哪種判斷條件可以根據實際需求調整。
七、總結
在Selenium自動化測試中,等待元素的加載是非常重要且必不可少的一個環節。通過本文的分析,我們可以看到顯示等待和隱式等待的區別,以及它們各自的優劣勢,並且了解了預期條件的不同。
對於一些需要控制某個元素等待時間的場景,我們可能需要使用到顯示等待來實現,而對於整個頁面進行等待的場景,則可以考慮使用隱式等待。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/232265.html