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

如何用Python3 + Selenium自动点击reCAPTCHA v2复选框?

解决Python3 + Selenium点击reCAPTCHA复选框的问题

问题根源

你用的绝对XPATH太依赖页面固定结构,只要页面元素层级稍有变动就会失效;更关键的是reCAPTCHA复选框默认嵌套在独立的iframe中,直接在主文档里定位肯定找不到目标元素。

解决方案步骤

  1. 切换到reCAPTCHA的iframe:先定位包含reCAPTCHA的iframe容器,切换进去后才能操作内部元素
  2. 用稳定定位方式找复选框:放弃绝对XPATH,改用基于元素属性的相对定位规则
  3. 等待元素加载完成:用显式等待确保元素可点击后再执行点击操作,避免因加载延迟报错

完整代码示例

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

# 初始化Chrome浏览器驱动
driver = webdriver.Chrome()
driver.get("https://www.consularappointment.sg/ConsularAppointment")

try:
    # 1. 等待reCAPTCHA iframe加载并切换进去
    recaptcha_iframe = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "iframe[src*='recaptcha']"))
    )
    driver.switch_to.frame(recaptcha_iframe)

    # 2. 等待复选框可点击后执行点击
    recaptcha_checkbox = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, ".recaptcha-checkbox-checkmark"))
    )
    recaptcha_checkbox.click()

    # 3. 操作完成后切回主文档(后续需操作页面其他元素时执行)
    driver.switch_to.default_content()

except Exception as e:
    print(f"操作出错: {str(e)}")
finally:
    # 根据需求选择是否关闭浏览器
    # driver.quit()
    pass

额外说明

  • 如果页面存在多个reCAPTCHA iframe,可调整iframe的定位条件(比如结合title属性筛选)
  • reCAPTCHA自带反爬机制,频繁自动点击可能触发图片验证等挑战,这类场景纯Selenium无法自动完成,需借助第三方服务或手动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:36:21