• Selenium的WebDriver操作页面的超时或者元素重叠引起的ElementClickInterceptedException


    超时

    处理由页面加载引起的超时是在使用 Selenium 进行自动化测试中常见的任务。页面加载可能因网络速度慢、页面复杂性或异步操作而导致超时。以下是一些处理页面加载超时的方法:

    1.设置隐式等待时间: 使用 implicitly_wait 方法可以设置隐式等待时间,让 Selenium 等待一定时间,直到元素出现在页面上或等待超时。这个等待时间适用于整个 WebDriver 对象的生命周期,它会在每个 find_element 或 find_elements 方法调用时生效。

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    
    # 设置隐式等待时间为10秒
    driver.implicitly_wait(10)
    
    # 在此之后的查找元素操作会等待最多10秒
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.使用显式等待: 使用 WebDriverWait 类和 expected_conditions 来等待特定条件的满足,例如等待某个元素可见、存在或可点击。这样,您可以更精确地控制等待的条件和最大等待时间。

    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
    
    driver = webdriver.Chrome()
    wait = WebDriverWait(driver, 10)  # 设置显式等待时间为10秒
    
    # 等待直到元素可见
    element = wait.until(EC.visibility_of_element_located((By.ID, 'element_id')))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    元素重叠

    错误信息

    selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div class="el-tree-node__content" style="padding-left: 18px;">...</div> is not clickable at point (339, 176). Other element would receive the click: <div class="el-loading-mask loading-class is-fullscreen" style="background-color: rgba(255, 255, 255, 0.5); z-index: 2032;">...</div>
    
    • 1

    解决方法

    element = driver.find_element(By.XPATH, value="/html/body/div/div/div[1]/div[2]/div[1]/div/ul/div[4]/a/li")
    driver.execute_script("arguments[0].click();", element)
    
    • 1
    • 2
  • 相关阅读:
    联想G50笔记本直接使用F键功能(F1~F12)需要在BIOS设置关闭热键功能可以这样操作!
    1.Golang语法学习总结
    UE中FRotator和Pitch(Roll,Yaw)以及相对朝向的关系
    【Spark学习笔记】- 4运行架构&核心组件&核心概念
    一次痛苦的经历 - 带状疱疹诊疗与康复记录
    旧系统改造
    借鸡下蛋:室内定位之基于众包采集的 WiFi 指纹地图
    数据结构 | 图
    UTF-8编码及非英文字符的处理与显示
    使用基于SSIM的CNN进行环路滤波
  • 原文地址:https://blog.csdn.net/qq_43496409/article/details/133763030