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

使用Selenium处理网站年龄验证闪屏页元素定位失败问题

Selenium 无法定位年龄校验确认按钮问题解决方案

核心问题主要有两类:

  • 固定等待time.sleep可靠性低,页面动态渲染逻辑复杂时,很容易出现元素还没挂载到DOM树就执行定位的情况
  • 绝大多数站点的年龄校验弹窗是独立嵌套在iframe标签内的,直接在主页面DOM中查找元素必然找不到

修正后代码实现

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

driver.get('https://seelbachs.com/products/sagamore-spirit-cask-strength-rye-whiskey')

# 初始化显式等待,最长超时时间设为10秒
wait = WebDriverWait(driver, 10)
# 等待年龄校验iframe加载完成后切换进入
age_verify_iframe = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'iframe[src*="age-verify"]')))
driver.switch_to.frame(age_verify_iframe)

# 等待确认按钮可点击后执行点击操作
confirm_btn = wait.until(EC.element_to_be_clickable((By.ID, 'enter')))
confirm_btn.click()

# 操作完成后切回主文档,不影响后续页面操作
driver.switch_to.default_content()

异常适配说明

如果执行后仍然报错,可通过浏览器开发者工具手动确认两个信息后调整代码:

  • 年龄校验弹窗对应的iframe标签的唯一属性,替换代码中的iframe选择器即可
  • 确认按钮的实际属性,若ID不是enter可替换为XPATH等其他定位方式,比如通过按钮文本匹配:(By.XPATH, "//button[contains(text(),'Enter')]")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:15:04