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

使用Selenium操作reCAPTCHA v2无法点击音频挑战按钮报错如何解决

reCAPTCHA v2 多验证场景下无法点击音频按钮解决方案

你遇到的IndexError: list index out of range错误,核心原因是定位第二个验证码挑战iframe的逻辑不可靠:固定父级xpath/html/body/div[2]/div[4]的写法对动态渲染的reCAPTCHA弹出框兼容性极差,且直接按索引取iframe的方式会受页面其他iframe干扰,完全不适用双验证码场景。

以下是可直接落地的修复方案:

  • 替换原有iframe定位逻辑,使用属性匹配定位目标iframe
    reCAPTCHA音频挑战所在的iframe有固定的title特征,无需依赖索引或父容器路径即可准确定位,搭配显式等待避免加载时序问题,代码修改如下:
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 点击第一个验证码复选框后,先切回主文档
    driver.switch_to.default_content()
    # 显式等待挑战iframe加载完成,通过title特征定位,不依赖索引
    challenge_iframe = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'iframe[title*="recaptcha challenge"]'))
    )
    driver.switch_to.frame(challenge_iframe)
    # 等待音频按钮可点击后再触发点击
    audio_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'recaptcha-audio-button'))
    )
    audio_btn.click()
    
  • 优化第一个验证码的定位逻辑
    原有直接按索引取所有iframe第一个元素的写法,在双验证码场景下很容易找错对应框,建议也通过验证码的key属性或所属容器定位第一个anchor iframe,避免两个验证码的iframe混淆。
  • 额外排查点
    如果修改后还是触发异常,检查当前selenium驱动版本与浏览器版本是否匹配,同时确认操作前没有其他弹窗遮挡reCAPTCHA挑战框即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:39:00