selenium查找網(wǎng)頁(yè)出現(xiàn)加載卡頓或失敗的解決方法
selenium獲取一個(gè)網(wǎng)頁(yè),某個(gè)網(wǎng)頁(yè)的資源卡了很久還沒(méi)有加載成功,如何放棄這個(gè)卡的數(shù)據(jù),繼續(xù)往下走
有2鐘方式。通常可以采用下面的方式一來(lái)處理這種情況
方式一、WebDriverWait
這種方式對(duì)于資源比較多比較復(fù)雜的網(wǎng)頁(yè)比較合適,比如有些圖片在國(guó)外,一直加載不出來(lái)。mail.com就是這樣
當(dāng)網(wǎng)頁(yè)15秒還沒(méi)有加載完成,此時(shí)代碼不管有沒(méi)有找到元素都會(huì)繼續(xù)往下走,:
- 如果沒(méi)有找到元素就會(huì)拋異常。
- 如果找到元素,就會(huì)點(diǎn)擊
這個(gè)時(shí)候,如果拋異常??梢远鄧L試即便,直到不拋異常即可繼續(xù)往下走
def ClickElementByXpath(self, brower, xPath): try: brower.implicitly_wait(5) self.insert_text_to_last_line(self.log_pass_file, xPath) result = WebDriverWait(brower, 15).until(EC.presence_of_element_located((By.XPATH, xPath))) result.click() return True except Exception as e: print('exception timeout!!!') return False
方式二、find_element
這種方式適合資源能快速加載完成的網(wǎng)站。
find_element會(huì)等到網(wǎng)站所有的資源全部加載完成后,再繼續(xù)往下執(zhí)行,這樣的話更穩(wěn)定,但對(duì)于有些網(wǎng)站資源本身很卡,就會(huì)一直卡住了,導(dǎo)致卡非常久,最后腳本運(yùn)行失敗。
def ClickElementByXpath(self, brower, xPath): try: brower.implicitly_wait(55) self.insert_text_to_last_line(self.log_pass_file, xPath) #element_input = brower.find_element_by_xpath(xPath) element_input = brower.find_element(By.XPATH, xPath) element_input.click() return True except Exception as e: print('exception timeout!!!') return False
是否可以設(shè)置超時(shí)時(shí)間 當(dāng)元素的點(diǎn)擊后 ,不等頁(yè)面加載完成,接著往下走
在Selenium中,可以使用WebDriver的set_page_load_timeout方法來(lái)設(shè)置頁(yè)面加載的超時(shí)時(shí)間,但是這個(gè)設(shè)置通常是應(yīng)用于整個(gè)頁(yè)面的加載,而不是單個(gè)元素的點(diǎn)擊操作。如果你希望在點(diǎn)擊元素后不等待頁(yè)面加載完成,而是繼續(xù)執(zhí)行后續(xù)操作,可以采取以下方法:
使用set_page_load_timeout:你可以設(shè)置一個(gè)較短的頁(yè)面加載超時(shí)時(shí)間,以便在點(diǎn)擊元素后等待較短的時(shí)間。然后,可以在捕獲超時(shí)異常后,繼續(xù)執(zhí)行后續(xù)操作。
from selenium import webdriver from selenium.common.exceptions import TimeoutException # 創(chuàng)建 WebDriver 實(shí)例 driver = webdriver.Chrome() # 設(shè)置頁(yè)面加載超時(shí)時(shí)間為5秒 driver.set_page_load_timeout(5) try: # 打開網(wǎng)頁(yè) driver.get("https://example.com") # 找到要點(diǎn)擊的元素 element = driver.find_element_by_id("my_element_id") # 點(diǎn)擊元素 element.click() except TimeoutException: print("頁(yè)面加載超時(shí)") # 在這里可以繼續(xù)執(zhí)行后續(xù)操作,而不用等待頁(yè)面加載完成 # 關(guān)閉 WebDriver driver.quit()
以上就是selenium查找網(wǎng)頁(yè)出現(xiàn)加載卡頓或失敗的解決方法的詳細(xì)內(nèi)容,更多關(guān)于selenium查找網(wǎng)頁(yè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python實(shí)戰(zhàn)使用Selenium爬取網(wǎng)頁(yè)數(shù)據(jù)
- Python selenium如何打包靜態(tài)網(wǎng)頁(yè)并下載
- 搭建 springboot selenium 網(wǎng)頁(yè)文件轉(zhuǎn)圖片環(huán)境的詳細(xì)教程
- 淺談selenium如何應(yīng)對(duì)網(wǎng)頁(yè)內(nèi)容需要鼠標(biāo)滾動(dòng)加載的問(wèn)題
- Selenium定時(shí)刷新網(wǎng)頁(yè)的實(shí)現(xiàn)代碼
- 學(xué)習(xí)Python selenium自動(dòng)化網(wǎng)頁(yè)抓取器
相關(guān)文章
Pyinstaller打包.py生成.exe的方法和報(bào)錯(cuò)總結(jié)
今天小編就為大家分享一篇關(guān)于Pyinstaller打包.py生成.exe的方法和報(bào)錯(cuò)總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04python cv2讀取rtsp實(shí)時(shí)碼流按時(shí)生成連續(xù)視頻文件方式
今天小編就為大家分享一篇python cv2讀取rtsp實(shí)時(shí)碼流按時(shí)生成連續(xù)視頻文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12pycharm 2021.3最新激活碼有效期至2100年(親測(cè)可用)
這篇文章主要介紹了pycharm 2021.3最新激活碼有效期至2100年(親測(cè)可用)2021-02-02python爬蟲中PhantomJS加載頁(yè)面的實(shí)例方法
在本篇文章里小編給大家整理了關(guān)于python爬蟲中PhantomJS加載頁(yè)面的實(shí)例方法,有需要的朋友們可以參考下。2020-11-11matplotlib圖例legend語(yǔ)法及設(shè)置的方法
這篇文章主要介紹了matplotlib圖例legend語(yǔ)法及設(shè)置的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07pandas.dataframe中根據(jù)條件獲取元素所在的位置方法(索引)
今天小編就為大家分享一篇pandas.dataframe中根據(jù)條件獲取元素所在的位置方法(索引),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06python使用mysqldb連接數(shù)據(jù)庫(kù)操作方法示例詳解
這篇文章主要介紹了python mysqldb使用方法,大家參考使用2013-12-12