學習這一章的時候,無法清楚的了解到顯式等待與隱式等待的區別。
這一篇講得挺清楚的:
為什麼需要設定元素等待?
#!/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...