欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

selenium查找網(wǎng)頁(yè)出現(xiàn)加載卡頓或失敗的解決方法

 更新時(shí)間:2023年10月05日 08:01:43   作者:虛壞叔叔  
這篇文章主要為大家詳細(xì)介紹了selenium查找網(wǎng)頁(yè)時(shí)如何處理網(wǎng)站資源一直加載非??D或者失敗的情況,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

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)文章!

相關(guān)文章

最新評(píng)論