Selenium強制等待 顯式等待 隱式等待的區別

2021-10-23 10:08:01 字數 2322 閱讀 8159

學習這一章的時候,無法清楚的了解到顯式等待與隱式等待的區別。

這一篇講得挺清楚的:

為什麼需要設定元素等待?

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""__title__ =

__time__ = 2020/3/25 17:52

__author__ = 小菠蘿測試筆記

__blog__ =

"""from time import sleep

from selenium import webdriver

driver = webdriver.chrome("../resources/chromedriver.exe")

20)# 訪問**

driver.get("")

# ===強制等待3秒才執行下一步===

sleep(3)

# 找到搜尋框

inputelement = driver.find_element_by_id("kw")

如果在規定時間內,整個網頁都載入完成,則執行下一步,否則會丟擲異常 

可以把隱式等待當做全域性變數,它影響整個頁面,所以程式需要等待整個頁面載入完成(就是瀏覽器標籤欄那個小圈不再轉)時,才會執行下一步【頁面載入完成,才能執行下一步】

但可能頁面載入未完成的時候,需要定位的元素已經載入完成了,但受限於某些js檔案、載入特別慢,我們不能執行下一步,必須得等到網頁所有東西都載入完了才能下一步【增加不必要的載入時間】

很簡單,就呼叫乙個方法即可,畢竟是作用於webdriver的

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""__title__ =

__time__ = 2020/3/25 17:52

__author__ = 小菠蘿測試筆記

__blog__ =

"""from selenium import webdriver

# 載入驅動

driver = webdriver.chrome("../resources/chromedriver.exe")

# ===隱性等待20s===

driver.implicitly_wait(20)

# 訪問**

driver.get("")

# 找到搜尋框

inputelement = driver.find_element_by_id("kw")

相比隱式等待,顯式等待只對指定元素生效,不再是在整個webdriver生命週期內生效【僅對元素生效】

可以根據需要定位的元素來設定顯式等待,無需等待頁面完全載入,節省大量因載入無關緊要檔案而浪費掉的時間【針對元素設定,無需等待頁面載入完成,節省載入時間】

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""__title__ =

__time__ = 2020/3/25 17:52

__author__ = 小菠蘿測試筆記

__blog__ =

"""from time import sleep

from selenium import webdriver

# 載入驅動

from selenium.webdriver.common.by import by

from selenium.webdriver.support.wait import webdriverwait

from selenium.webdriver.support import expected_conditions as ec

driver = webdriver.chrome("../resources/chromedriver.exe")

# 訪問**

driver.get("")

# ===顯式等待===

# 設定元素等待例項,最多等10秒,每0.5秒檢視條件是否成立

element = webdriverwait(driver, 10, 0.5).until(

# 條件:直到元素載入完成

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

)

selenium自學之路 顯式等待,隱式等待

顯示等待 使webdriver等待某個條件成立時繼續執行,否則在達到最大時長時拋棄超時異常 from selenium import webdriver from selenium.webdriver.common.by import by from selenium.webdriver.suppo...

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

等待 是設定了乙個最長等待時間,如果在規定時間內網頁載入完成,則執行下一步,否則一直等到時間截止,然後執行下一步。注意這裡有乙個弊端,那就是程式會一直等待整個頁面載入完成,也就是一般情況下你看到瀏覽器標籤欄那個小圈不再轉,才會執行下一步,但有時候頁面想要的元素早就在載入完成了,但是因為個別js之類的...

selenium之顯式等待和隱式等待 休眠

為什麼要等待 需要的元素尚未載入出來 原因可能有 網速慢 內容過多 已經執行到元素位置,此時會報錯 為避免這種錯誤,需要使用到等待,等待元素載入出來再執行元素 1 顯式等待 顯式等待是針對於某個特定的元素設定的等待時間 格式 webdriverwait driver,timeout,poll fre...