selenium的三種等待方法

2022-08-24 23:15:12 字數 2934 閱讀 9679

**:

selenium顯式等待和隱式等待的區別

1、selenium的顯式等待

原理:顯示等待,就是明確的要等到某個元素的出現或者是某個元素的可點選等條件,等不到,就一直等,除非在規定的時間之內都沒找到,那麼久跳出exception

(簡而言之,就是直到元素出現才去操作,如果超時則報異常)12

3456

78910

1112

1314

1516

1718

1920

2122

2324

fromseleniumimportwebdriver

fromselenium.webdriver.common.byimportby

fromselenium.webdriver.support.uiimportwebdriverwait

fromselenium.webdriver.supportimportexpected_conditions as ec

driver=webdriver.chrome()

driver.get('')

element=webdriverwait(driver,5,0.5).util(

ec.presence_of_element_located((by.id,'kw'))

)

element.send_keys('hello')

driver.quit()

webdriverwait(driver,timeout,poll_frequency=0.5,ignored_exceptions=none)

driver:瀏覽器驅動

timeout:最長超過時間,預設以秒為單位

poll_frequency:監測的時間間隔,預設為0.5

ignored_exceptions:超時後的異常資訊,預設情況下拋nosuchelementexception異常

webdriverwait一般有until和until_not方法配合使用

until(method,message)

until_not(method ,message)

2、selenium的隱式等待

原理:隱式等待,就是在建立driver時,為瀏覽器物件建立乙個等待時間,這個方法是得不到某個元素就等待一段時間,直到拿到某個元素位置。

注意:在使用隱式等待的時候,實際上瀏覽器會在你自己設定的時間內部斷的重新整理頁面去尋找我們需要的元素12

3456

78fromseleniumimportwebdriver

fromselenium.webdriver.common.byimportby

fromselenium.webdriver.support.uiimportwebdriverwait

fromselenium.webdriver.supportimportexpected_conditions as ec

driver=webdriver.chrome()

driver.implicity_wait(10)

driver.get('')

implicity_wait()預設引數的單位為妙,本例中設定等待時長為10秒,首先這10秒並非乙個固定的等待時間,它並不影響指令碼的執行速度。其次,它並不針對頁面上的某一元素進行等待。當指令碼執行到某個元素定位是,如果元素可以定位,則繼續執行,如果元素定位不到,則它將以輪詢的方式不斷地判斷元素是否被定位到。假設在第六秒定位到了元素則繼續執行,若直到超出設定的時長10秒還沒有定位到元素,則丟擲異常。

3.固定等待

固定等待主要是呼叫time模組的sleep方法,固定等待幾秒。例如:

time.sleep(3),等待3s後在執行下一步操作

selenium的三種等待

1 強制等待 不管頁面是否載入出來,強制讓進城等待。2 隱式等待 driver.implicitly wait 20 3 顯示等待 滿足一些內建的等待條件,這要這些條件滿足,就等待結束。這些條件比如 特定頁面元素載入出來。建立顯示等待的步驟 導包from selenium.webdriver.sup...

selenium三種等待方式

很多時候,我們進行元素定位時無法按預期成功定位到元素,但是我們的 又確保準確無誤,那是什麼原因呢?其實,原因很簡單,大致分為2種 1,所定位的元素在frame iframe中 2,未設定合理的等待 為什麼未設定合理等待的時候,很有可能無法正確定位元素呢?我們知道,的執行速度很快很快,但瀏覽器的渲染速...

Selenium 三種等待方式詳解

我們在做web自動化時,一般要等待頁面元素載入完成後,才能執行操作,否則會報找不到元素的錯誤,這樣就要求我們在有些場景下加等待時間。我們平常用到的有三種等待方式 利用time模組的sleep方法來實現,最簡單粗暴的等待方法 coding utf 8 from time import sleep fr...