Selenium筆記(6)等待

2021-09-23 10:23:10 字數 1901 閱讀 5413

1.簡介

在selenium操作瀏覽器的過程中,每一次請求url,selenium都會等待頁面載入完畢以後,才會將操作許可權再次交給我們的程式。

但是,由於ajax和各種js**的非同步載入問題,所以我們在使用selenium的時候常常會遇到操作的元素還沒有載入出來,就會引發報錯。為了解決這個問題,selenium提供了幾種等待的方法,讓我們可以等待元素載入完畢後,再進行操作。

2.顯式等待

driver.quit()在這個例子中,我們在查詢乙個元素的時候,不再使用find_element_by_*這樣的方式來查詢元素,而是使用了webdriverwait

try**塊中的**的意思是:在丟擲元素不存在異常之前,最多等待10秒。在這10秒中,webdriverwait會預設每500ms執行一次until之中的內容,而until中的ec.presence_of_element_located則是檢查元素是否已經被載入,檢查的元素則通過by.id這樣的方式來進行查詢。

就是說,在10秒內,預設每0.5秒檢查一次元素是否存在,存在則將元素賦值給element這個變數。如果超過10秒這個元素仍不存在,則丟擲超時異常。

2.1. expected conditions

expected conditions這個類提供了很多種常見的檢查條件可以供我們使用。

例子:

from selenium.webdriver.support import expected_conditions as ec

wait = webdriverwait(driver, 10)

element = wait.until(ec.element_to_be_clickable((by.id, 'someid')))
3.隱式等待

隱式等待指的是,在webdriver中進行find_element這一類查詢操作時,如果找不到元素,則會預設的輪詢等待一段時間。

這個值預設是0,可以通過以下方式進行設定:

from selenium import webdriver

driver = webdriver.chrome()

driver.implicitly_wait(10) # 單位是秒

Selenium 10 等待操作

等待操作 為了保證指令碼的穩定性,有時候需要引入等待時間,等待頁面載入元素後再進行操作,selenium提供三種等待時間設定方式。三種等待時間設定方式 1 固定等待 sleep 固定休眠時間設定,python的time包裡提供了休眠方法sleep,匯入包後就能使用 sleep 方法以秒為單位,如果超...

6 等待,只因曾經承諾

6 等待,只因曾經承諾 hub thread 中還有乙個函式沒有講,它就是try to freeze 這是與電源管理相關的函式。對大多數人來說,關於這個函式,了解就可以了。隨著linux開始支援suspended之後,有人提倡,每乙個核心程序都應該在適當的時候,呼叫try to freeze 什麼意...

3 1等待 通知機制(wait notify)

要點 wait 執行前在呼叫wait 之前,必須先要獲得物件鎖,即只有在同步方法或者同步 塊中呼叫wait 方法。執行作用 wait 使程序進入等待 阻塞狀態 在收到通知或者被中斷之前都會進入預執行佇列。執行之後1 執行wait 之後,當前執行緒釋放改物件鎖,在通知前與其他執行緒重新競爭資源 執行之...