天天看點

selenium之顯示等待(等到某個元素出現後再繼續執行)

本文章還請認真仔細閱讀,非常簡單,閱讀前,你可能已經掌握,xpath

我們在爬蟲的時候,總會利用time.sleep(),去等待元素的出現,但是這很容易出錯,因為你不知道你的網速有多卡😂,進而導緻頻繁報錯

我相信我的注釋已經很 【言簡意赅】了,你一定可以看得懂

我用了一個很簡單的例子,百度一下

我喜歡直接上代碼

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wd = webdriver.Chrome()
wd.get('http://www.baidu.com')

# wd是webdriver對象,10是最長等待時間,0.5是每0.5秒去查詢對應的元素。until後面跟的等待具體條件,EC是判斷條件,檢查元素是否存在于頁面的 DOM 上。
# 這行可以了解為 每0.5s連接配接到百度的首頁看看,有沒有出來
login_btn = WebDriverWait(wd, 10, 0.5).until(EC.presence_of_element_located((By.ID, "s-top-loginbtn")))

# 再舉個例子 比如網速慢, 【百度一下】 左邊的輸入框沒出來,那我們就設定,如果出現就輸入 查找的關鍵字
WebDriverWait(wd, 10, 0.5).until(EC.presence_of_element_located((By.XPATH, "//input[@id='kw']")))
input_ = wd.find_element_by_xpath("//input[@id='kw']")
time.sleep(0.1)
input_.send_keys("python")

# 再舉個例子 比如網速慢, 【百度一下】 這四個字沒出來(按鈕),那我們就設定,如果出現就輸入 查找的關鍵字,然後點選
WebDriverWait(wd, 10, 0.5).until(EC.presence_of_element_located((By.XPATH, "//input[@id='su']")))
baiduyixia = wd.find_element_by_xpath("//input[@id='su']")
time.sleep(0.1)
baiduyixia.click()

time.sleep(2)
wd.close()
           

參考連結:https://blog.csdn.net/qq_44728587/article/details/122997412

緻力于辦公自動化的小小程式員一枚

都看到這了,關注+點贊+收藏=不迷路!!