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

如何在Selenium中提交reCaptcha完成UEFA账户注册

问题分析与解决方案

你遇到的核心问题是:注入reCaptcha token后无法触发表单提交,本质是没有正确完成reCaptcha验证的闭环,且依赖了脆弱的页面元素定位方式。以下是针对性的解决步骤:


1. 修正reCaptcha Token注入逻辑

直接修改innerHTML无效,因为g-recaptcha-response是textarea元素,需修改value属性,同时必须触发reCaptcha的验证回调:

result = SolveCaptcha()
if result:
    code = result['code']
    # 正确注入token并触发验证回调
    driver.execute_script(f'''
        const responseEl = document.getElementById("g-recaptcha-response");
        responseEl.value = "{code}";
        // 触发reCaptcha官方回调完成验证
        if (typeof grecaptcha !== 'undefined') {{
            grecaptcha.execute();
        }}
    ''')
    time.sleep(3) # 给页面处理验证的时间

2. 找到并触发表单提交

UEFA的注册表单提交按钮可能是动态显示或隐藏的,可通过两种方式触发提交:

方式一:查找并点击提交按钮

# 用相对选择器查找按钮(避免绝对XPATH的脆弱性)
try:
    submit_btn = driver.find_element(By.XPATH, '//button[contains(text(), "创建账户") or contains(text(), "Create Account")]')
    # 强制点击,即使按钮不可见
    driver.execute_script("arguments[0].click();", submit_btn)
except NoSuchElementException:
    print("未找到可见提交按钮,尝试直接提交表单")

方式二:直接调用表单的submit方法

如果找不到按钮,可直接定位表单元素提交:

form = driver.find_element(By.CSS_SELECTOR, 'form')
form.submit()

3. 优化代码中的关键问题

  • 修正2Captcha API Key读取逻辑:你之前把sitekey当作环境变量名是错误的,应该用专门的环境变量存储API密钥:
    def SolveCaptcha():
        # 从环境变量读取API密钥,备用值填你的2Captcha密钥
        api_key = os.getenv('TWOCAPTCHA_API_KEY', 'a733edea49a8327795d56edc9f06d391')
        solver = TwoCaptcha(api_key)
        try:
            return solver.recaptcha(
                sitekey=g_key,
                url=current_url
            )
        except Exception as e:
            print(e)
            return None
    
  • 替换绝对XPATH:绝对XPATH极易因页面结构变化失效,改用相对选择器,比如:
    # 邮箱输入框
    email = driver.find_element(By.CSS_SELECTOR, 'input[type="email"]')
    # 密码输入框
    password = driver.find_element(By.CSS_SELECTOR, 'input[type="password"]')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:45:20