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

异常捕获后调用driver.execute_script()报错,直接写代码正常的问题求助

解决思路

1. 排查变量作用域

  • 确认ScriptSiCrashLogin变量是否在异常处理块的作用域内。如果变量是在try块内部(比如循环里)定义的,except块无法访问该变量,就会导致调用失败——直接写代码则不受作用域限制。
  • 解决:将ScriptSiCrashLogin的定义移至try块之外,确保整个代码流程都能访问到该变量。

2. 检查字符串格式一致性

  • 用变量存储JS脚本时,可能存在转义错误、换行/缩进处理不当的问题。比如直接写代码时用了三引号包裹多行脚本,但变量赋值时未正确使用三引号,导致脚本被截断或格式混乱。
  • 解决:
    • 用三引号包裹变量赋值的JS脚本,示例:
      ScriptSiCrashLogin = """
      // 你的完整JS代码
      document.getElementById('username').value = 'your_account';
      document.getElementById('password').value = 'your_pwd';
      document.querySelector('button[type="submit"]').click();
      """
      
    • 打印ScriptSiCrashLogin的内容,与直接写入异常块的代码逐行对比,排查是否存在引号不匹配、分号缺失、换行丢失等差异。

3. 确认变量未被意外修改

  • 检查循环过程中是否有代码意外修改了ScriptSiCrashLogin的值(比如重新赋值、清空),导致异常触发时变量内容已不是原始脚本。
  • 解决:在异常块执行driver.execute_script前,先打印ScriptSiCrashLogin的内容,或在循环中添加日志监控变量值的变化。

4. 排查编码与隐藏字符问题

  • 即使代码内容看起来一致,变量存储的字符串可能存在不可见的编码字符,导致执行失败。
  • 解决:
    • 将直接写在异常块中的代码复制出来,重新赋值给ScriptSiCrashLogin,确保完全一致。
    • 使用repr(ScriptSiCrashLogin)打印变量的原始字符串表示,对比直接写的代码的repr结果,排查隐藏差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:04:58