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

Python Selenium如何按双重条件查找表格元素并解决点击拦截问题

解决方案

1. 组合双重条件定位目标元素

定位逻辑为:先匹配class为diff-row evTabRow bc、data-bname属性等于指定赛马名称的行元素,再在该行内匹配data-bk属性等于指定书商值的单元格,有两种实现方式:

直接使用CSS选择器一次性定位(推荐)

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

# 预设变量
selection = 'Aramis Grey'
book = 'PP'

# 构造CSS选择器,点号连接class选择器比全匹配class属性更灵活,不会因新增其他class失效
target_selector = f'.diff-row.evTabRow.bc[data-bname="{selection}"] [data-bk="{book}"]'
# 等待元素加载可见
target_cell = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, target_selector)))

分两步定位(更适合新手理解)

# 第一步:定位符合条件的行
target_row = driver.find_element(By.CSS_SELECTOR, f'.diff-row.evTabRow.bc[data-bname="{selection}"]')
# 第二步:在当前行的子元素中查找符合条件的单元格
target_cell = target_row.find_element(By.CSS_SELECTOR, f'[data-bk="{book}"]')

2. 解决ElementClickInterceptedException点击拦截报错

报错原因是目标元素被其他页面元素(报错信息中提到的div._3g1ozk一般是悬浮提示、广告、cookie条、或未完全渲染的遮挡层)遮挡,普通点击无法触发,可按以下方案解决:

  • 方案1:先滚动元素到可视区域,等待可点击后再执行点击
# 将元素滚动到页面中间位置,避免被顶部/底部固定悬浮栏遮挡
driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", target_cell)
# 等待元素处于可点击状态后点击
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(target_cell)).click()
  • 方案2:使用JS执行点击,绕开前端元素遮挡限制(普通点击无效时优先用这个)
driver.execute_script("arguments[0].click();", target_cell)
  • 方案3:主动移除遮挡元素后点击,如果是固定存在的遮挡元素可以用这个方法
# 移除报错中提到的遮挡元素
block_element = driver.find_element(By.CSS_SELECTOR, 'div._3g1ozk')
driver.execute_script("arguments[0].remove();", block_element)
# 再点击目标元素
target_cell.click()

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:18:01