You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium元素点击拦截错误:批量点击标签提取表格数据失败

问题解决:ElementClickInterceptedException 元素点击被拦截

错误原因很明确:你要点击的下拉选项被页面上的<div class="dxh-content">元素挡住了,直接调用click()方法时,浏览器判定目标元素不可点击,因此抛出该错误。

下面是几个可行的解决办法:

方法1:用JavaScript强制点击

直接通过JS代码触发元素的点击事件,绕过浏览器的可见性检查,这是最直接的解决方式:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.hipodromx.com/galop.aspx?Page=1")

# 打开下拉菜单
driver.find_element_by_xpath("//img[@id='ctl00_ContentPlaceHolder1_ASPxPageControl1_cbGalopIstatistikMesafe_B-1Img']").click()
TABLO = []

for i in range(0,6):
    # 定位目标元素
    target_elem = driver.find_element_by_xpath("//td[@id='ctl00_ContentPlaceHolder1_ASPxPageControl1_cbGalopIstatistikMesafe_DDD_L_LBI{}T0']".format(i))
    # 用JS执行点击
    driver.execute_script("arguments[0].click();", target_elem)
    
    # 用显式等待替代固定sleep,确保表格加载完成
    WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//tr[contains(@id,'ctl00_ContentPlaceHolder1_ASPxPageControl1_grdGalopIstatistik_DXDataRow')]//descendant::td")))
    
    tablo = driver.find_elements_by_xpath("//tr[contains(@id,'ctl00_ContentPlaceHolder1_ASPxPageControl1_grdGalopIstatistik_DXDataRow')]//descendant::td")
    for elem in tablo:
        TABLO.append(elem.text)

tablo_duzenleme = [TABLO[x:x+10] for x in range(0, len(TABLO), 10)]
print(tablo_duzenleme)

方法2:用ActionChains模拟鼠标操作

模拟鼠标先移动到目标元素上再点击,适合元素仅被部分遮挡的场景:

from selenium.webdriver.common.action_chains import ActionChains

# 替换循环内的click代码
target_elem = driver.find_element_by_xpath("//td[@id='ctl00_ContentPlaceHolder1_ASPxPageControl1_cbGalopIstatistikMesafe_DDD_L_LBI{}T0']".format(i))
ActionChains(driver).move_to_element(target_elem).click(target_elem).perform()

额外优化建议

  • 避免使用固定时长的sleep(),改用显式等待(如示例中的WebDriverWait),等待元素加载完成后再操作,能有效避免因网络或页面渲染延迟导致的问题
  • 原代码内外层循环都使用变量i,会导致变量冲突,建议内层遍历改用其他变量名(如示例中的elem)

内容的提问来源于stack exchange,提问作者Recep ÇEM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:57:51