如何在Selenium的execute_script中把Python变量拼接到window.open链接内
报错原因
你定义的sample是Python环境的变量,和execute_script里运行的JavaScript分属完全独立的执行上下文,JS环境默认无法直接读取Python侧的变量,因此抛出「找不到变量sample」的错误。
正确实现方法
Selenium的execute_script原生支持参数传递:你只需要把要传入的变量按顺序放在execute_script的第二个及之后的参数位置,在JS代码内通过arguments[下标](下标从0开始,对应传入的第一个参数)读取即可。
写法1:直接传参数给JS拼接
sample = 5 driver.execute_script("window.open('http://www.wolframalpha.com/input/i?=' + arguments[0]);", sample)
写法2:Python侧先拼接完整URL再传入(更推荐,方便调试和做URL编码处理)
sample = 5 # 先在Python侧拼接好完整目标地址 target_url = f"http://www.wolframalpha.com/input/i?={sample}" driver.execute_script("window.open(arguments[0]);", target_url)
额外注意:如果查询参数包含特殊字符/中文/空格,需要先做URL编码避免格式错误
from urllib.parse import quote sample = "求x²的定积分" # 编码参数后再拼接URL encoded_sample = quote(sample) target_url = f"http://www.wolframalpha.com/input/i?={encoded_sample}" driver.execute_script("window.open(arguments[0]);", target_url)
内容的提问来源于stack exchange,提问作者Dtimer
相关产品推荐
相关产品推荐

