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

SeleniumBase中无法选中reCaptchaV2复选框问题求助

解决SeleniumBase点击reCAPTCHA复选框时浏览器崩溃的问题

问题根源排查与修复步骤

  • 定位器语法错误:你写的id#xxx格式不符合SeleniumBase定位规则,正确的ID定位应该用id=xxx(SeleniumBase内置语法)或CSS选择器#xxx。比如原代码中的span#recaptcha-anchor可简化为#recaptcha-anchor,无需指定标签名。

  • 未正确传递SB实例:你的checkbox()函数直接使用sb对象,但未从外部传入已初始化的SB实例,这会触发未定义错误,直接导致浏览器崩溃。必须在函数参数中接收SB实例,并在创建实例后调用函数。

  • reCAPTCHA反爬检测:普通模式的浏览器极易被reCAPTCHA识别为自动化工具,触发页面崩溃。需启用SeleniumBase的Undetected Chromedriver模式绕过检测。

  • 等待逻辑不完善:仅用wait_for_element只能确保元素存在,无法保证元素可点击。应改用wait_for_element_clickable,确保元素处于可交互状态后再执行点击。

修正后的代码示例

from seleniumbase import SB
from func_timeout import func_set_timeout, FunctionTimedOut

def checkbox(sb):
    print('- click checkbox')
    # 正确的CSS选择器定位reCAPTCHA复选框
    checkbox_selector = '#recaptcha-anchor'
    try:
        # 等待元素可点击,超时时间设为10秒
        sb.wait_for_element_clickable(checkbox_selector, timeout=10)
        sb.click(checkbox_selector)
        # 等待验证状态变更,替代固定sleep提升稳定性
        sb.wait_for_condition("return document.querySelector('#recaptcha-anchor').ariaChecked === 'true'", timeout=8)
    except FunctionTimedOut as e:
        print('- 👀 checkbox超时:', e)
    except Exception as e:
        print('- ❌ 操作失败:', str(e))

# 初始化Undetected Chromedriver实例,绕过反爬检测
with SB(uc=True) as sb:
    # 打开目标页面
    sb.open("https://你的目标页面地址.com")
    # 等待页面完全加载
    sb.wait_for_page_ready()
    # 调用复选框点击函数
    checkbox(sb)

额外注意事项

  • 若目标页面加载缓慢,可增加wait_for_page_ready()的超时参数,如sb.wait_for_page_ready(timeout=15)。
  • 如果仍被反爬机制检测,可尝试添加自定义用户代理:sb.set_user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:25:44