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

Selenium执行JS报ReferenceError:如何正确传递Python变量result_away?

问题解决:将Python变量传递到Selenium执行的JavaScript中

报错原因很明确:JavaScript运行在浏览器独立的上下文环境中,无法直接识别Python代码里定义的result_away变量,两者属于完全隔离的运行环境,自然会抛出"未定义"的错误。

下面是两种可行的解决方法:

方法1:字符串格式化嵌入变量值

直接把Python变量的实际值嵌入到JavaScript代码字符串中,同时注意先把ct1转成数值类型(否则np.round无法处理字符串):

# 修正类型转换,先把字符串转成float再取整
ct1 = df2[(df2['HomeTeam'] == at1)]['AwayTeamScore'].to_string(index=False)
result_away = np.round(float(ct1), decimals=3)
# 使用f-string将变量值嵌入JS代码
javaScript1 = f"document.getElementById('PoissonForm_homeGoalExp').value = {result_away}"
driver.execute_script(javaScript1)

这种方式简单直接,最终浏览器执行的是带有具体数值的JS代码,而非未定义的变量名。

方法2:通过Selenium的参数传递(更规范)

利用execute_script方法的参数传递功能,将Python变量作为参数传给JavaScript,在JS中通过arguments数组获取对应参数:

ct1 = df2[(df2['HomeTeam'] == at1)]['AwayTeamScore'].to_string(index=False)
result_away = np.round(float(ct1), decimals=3)
# 将result_away作为参数传入,JS中用arguments[0]获取
driver.execute_script("document.getElementById('PoissonForm_homeGoalExp').value = arguments[0];", result_away)

这种方式更安全,尤其是处理包含特殊字符的字符串时,无需手动处理引号转义,Selenium会自动完成变量的传递和类型转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:39:19