• selenium查找网页如何处理网站资源一直加载非常卡或者失败的情况


    selenium查找网页如何处理网站资源一直加载失败的情况

    在这里插入图片描述

    selenium获取一个网页,某个网页的资源卡了很久还没有加载成功,如何放弃这个卡的数据,继续往下走

    有2钟方式。通常可以采用下面的方式一来处理这种情况

    方式一、WebDriverWait

    这种方式对于资源比较多比较复杂的网页比较合适,比如有些图片在国外,一直加载不出来。mail.com就是这样

    当网页15秒还没有加载完成,此时代码不管有没有找到元素都会继续往下走,:

    • 如果没有找到元素就会抛异常。
    • 如果找到元素,就会点击

    这个时候,如果抛异常。可以多尝试即便,直到不抛异常即可继续往下走

        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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    方式二、find_element

    这种方式适合资源能快速加载完成的网站。

    find_element会等到网站所有的资源全部加载完成后,再继续往下执行,这样的话更稳定,但对于有些网站资源本身很卡,就会一直卡住了,导致卡非常久,最后脚本运行失败。

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    是否可以设置超时时间 当元素的点击后 ,不等页面加载完成,接着往下走

    在Selenium中,可以使用WebDriverset_page_load_timeout方法来设置页面加载的超时时间,但是这个设置通常是应用于整个页面的加载,而不是单个元素的点击操作。如果你希望在点击元素后不等待页面加载完成,而是继续执行后续操作,可以采取以下方法:

    使用set_page_load_timeout:你可以设置一个较短的页面加载超时时间,以便在点击元素后等待较短的时间。然后,可以在捕获超时异常后,继续执行后续操作。

    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    
    # 创建 WebDriver 实例
    driver = webdriver.Chrome()
    
    # 设置页面加载超时时间为5秒
    driver.set_page_load_timeout(5)
    
    try:
        # 打开网页
        driver.get("https://example.com")
        
        # 找到要点击的元素
        element = driver.find_element_by_id("my_element_id")
        
        # 点击元素
        element.click()
        
    except TimeoutException:
        print("页面加载超时")
    
    # 在这里可以继续执行后续操作,而不用等待页面加载完成
    
    # 关闭 WebDriver
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    sqlmap 执行后打开其它程序
    kali安装nodejs、npm失败
    log4j的级别的说明
    Java_String类
    540 - Team Queue (UVA)
    2023年CCF-CSP考前冲刺
    神经网络优化算法有哪些,人工神经网络优化算法
    ARM day2
    【LeetCode-面试经典150题-day25】
    [附源码]Python计算机毕业设计SSM绝味鸭脖连锁店信息系统(程序+LW)
  • 原文地址:https://blog.csdn.net/huangbangqing12/article/details/133547358