wuqiuyongcsdn 2025-05-14 09:00 采纳率: 75%
浏览 11

Selenium Element_Click_intercepted 问题

img


这是一个根据查询条件生成的记录列表。我在用 Selenium 操控这网页,在右下角页码文本框中填入想要的页码,再发送一个Enter键。系统开始加载该页面的记录。由于设置了查询条件,需要10秒钟左右才加载完毕。我 设置了等待时间为20秒,并设置了结束等待的条件。等页面加载完成再进行后续点击操作。但对于这样的点击,系统每次都返回“Element click intercepted”错误。

后来我在加载页面的同时加入一个input(), 等页面加载完成后,手动点击一个Enter键,问题才得以解决。但那样就失去自动化的意义了。

请问大咖们如何解决。

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-05-14 09:11
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你遇到的问题是 Selenium 在点击 Enter 键时,页面的元素被 intercept,导致页面加载时间过长。

    解决方案:

    1. 使用 WebDriverWait 等待元素可点击:
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 找到右下角页码文本框
    page_input = driver.find_element_by_xpath("//input[@name='page']")
    
    # 等待元素可点击
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable(page_input))
    
    # 发送 Enter 键
    page_input.send_keys(Keys.RETURN)
    
    1. 使用 execute_script 执行 JavaScript 代码:
    driver.execute_script("arguments[0].click();", page_input)
    
    1. 如果上述方法不行,可以尝试使用 ActionChains 模拟点击:
    from selenium.webdriver.common.action_chains import ActionChains
    
    actions = ActionChains(driver)
    actions.move_to_element(page_input).click().perform()
    

    这些方法都可以帮助你解决 Selenium 在点击 Enter 键时,页面的元素被 intercept 的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月14日