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

Python中执行JS定位ID可变的HTML元素完成hCaptcha验证提交

解决方案

方案1:通过固定name属性定位(最推荐)

hCaptcha对应的textarea元素name属性固定为h-captcha-response,不受动态id影响,直接使用CSS选择器匹配即可,对应代码如下:

value = get_value()
# 转义验证码值内的特殊字符,避免破坏JS语法
escaped_value = value.replace('"', '\\"').replace("'", "\\'")
insert_solution = f'document.querySelector(\'textarea[name="h-captcha-response"]\').value = "{escaped_value}";'
driver.execute_script(insert_solution)

提示:对表单元素赋值使用value属性比innerHTML更规范,兼容性更好。

方案2:通过id前缀匹配定位

如果页面存在多个同name的textarea的特殊场景,可以匹配id前缀定位,所有动态生成的hCaptcha textarea的id均以h-captcha-response开头:

value = get_value()
escaped_value = value.replace('"', '\\"').replace("'", "\\'")
insert_solution = f'document.querySelector(\'textarea[id^="h-captcha-response"]\').value = "{escaped_value}";'
driver.execute_script(insert_solution)

之前尝试失败的原因说明

  • document.getElementById()仅支持传入完整id字符串,不支持正则匹配,所以尝试正则匹配的方法无效
  • document.getElementsByTagName()是复数写法(末尾带s),返回值为元素集合,需要指定下标才能获取到对应元素,直接赋值会报错。

内容的提问来源于stack exchange,提问作者V-cash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 12:45:07