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

Selenium处理免责声明弹窗时报<button>坐标点不可点击错误如何解决

问题根因
  • 元素定位错误:使用By.TAG_NAME('button')会匹配页面中第一个按钮,该按钮并非免责声明弹窗的「同意」按钮,点击时被处于上层的模态框div拦截,触发报错
  • 点击逻辑受限:普通Selenium点击会遵循前端页面的元素层级规则,模态框未完全渲染完成时,即使目标按钮可见,点击事件也会被模态框的容器div拦截
修复后的完整代码
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
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

# 初始化浏览器
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
driver.get('https://air.norfolk.gov')

# 显式等待最多10秒,直到模态框的同意按钮可点击
wait = WebDriverWait(driver, 10)
agree_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.modal-footer .btn.primary-button')))

# 用JavaScript执行点击,绕过层级拦截
driver.execute_script("arguments[0].click();", agree_btn)

# 后续操作
search_box = wait.until(EC.element_to_be_clickable((By.ID, "primary_search")))
search_box.send_keys("this would be where the address goes")
代码说明
  • 替换硬等待time.sleep()为显式等待,根据元素加载状态自动判断等待时间,适配不同网络环境
  • 使用CSS选择器精准定位免责弹窗的同意按钮,避免定位到无关元素
  • 通过JavaScript执行点击操作,直接触发按钮的点击事件,跳过前端页面的元素层级点击校验,彻底解决点击被拦截的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:24:03