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

Python使用Selenium执行Javascript处理h-captcha时引号语法错误求助

错误原因

报错确实由引号嵌套冲突导致:你构造的JS代码中,XPath路径//textarea[@name="h-captcha-response"]外层已经用了双引号包裹,内部@name的属性值又用了双引号,JS解析时会提前截断字符串,导致语法结构断裂,抛出括号缺失的错误。
之前操作g-recaptcha的代码无报错,是因为getElementById的参数只有一层双引号,不存在嵌套冲突。

修复方案

方案1:直接调整引号嵌套(快速修复)

区分不同层级的引号即可,Python侧的字符串、JS侧的XPath外层、XPath内部属性值分别使用不同类型的引号,避免冲突:

insert_solver = 'document.getElementByXpath(\'//textarea[@name="h-captcha-response"]\').innerHTML="' + value + '";'
driver.execute_script(insert_solver)

方案2:参数传递(更稳妥,避免value含特殊字符报错)

直接通过execute_script的参数传递验证码值,无需手动处理任何转义,同时兼容value本身含单/双引号、换行符等特殊字符的场景,另外替换非标准的getElementByXpath为标准DOM方法,兼容性更强:

insert_solver = '''
// 使用标准document.evaluate方法解析XPath
const targetEle = document.evaluate(
  '//textarea[@name="h-captcha-response"]',
  document,
  null,
  XPathResult.FIRST_ORDERED_NODE_TYPE,
  null
).singleNodeValue;
targetEle.innerHTML = arguments[0];
'''
# 验证码值通过参数传入,无需处理转义
driver.execute_script(insert_solver, value)

内容的提问来源于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.20 15:45:04