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

如何在Selenium WebDriver URL中传递参数?Python传参失败求助

解决Selenium传递node_name参数到window.open的问题

我来帮你搞定这个问题~你之前的写法出错,是因为把Python的变量直接硬写到了JavaScript字符串里,JS根本不认识sys.argv[1]这个Python变量,自然没法正确解析。

下面给你两种靠谱的解决办法:

方法1:用Python的f-string拼接字符串

先把命令行参数存成变量,再用f-string把变量值嵌入到JS代码里,这样Python会先把变量替换成实际值,再传给execute_script执行:

import sys
from selenium import webdriver

# 初始化Chrome驱动(可根据实际配置调整,比如用ChromeDriverManager自动管理驱动)
driver = webdriver.Chrome()

# 确保运行时传入了命令行参数
if len(sys.argv) < 2:
    print("请在运行时传入node_name参数,比如:python your_script.py abc")
    driver.quit()
    sys.exit(1)

node_name = sys.argv[1]
# 用f-string把node_name嵌入到目标URL中
driver.execute_script(f"window.open('https://test.test.com/comp/node_name:{node_name}');")

# 后续操作...
driver.quit()

方法2:通过execute_script的参数传递(更安全)

这种方法不需要拼接字符串,而是把Python变量作为参数传给execute_script,在JS里用arguments[0]获取这个值,能避免潜在的字符串注入问题,更推荐使用:

import sys
from selenium import webdriver

driver = webdriver.Chrome()

if len(sys.argv) < 2:
    print("请传入node_name参数")
    driver.quit()
    sys.exit(1)

node_name = sys.argv[1]
# 把node_name作为第二个参数传给execute_script,JS里用arguments[0]引用它
driver.execute_script("window.open('https://test.test.com/comp/node_name:' + arguments[0]);", node_name)

# 后续操作...
driver.quit()

两种方法都能实现你的需求,选哪种看你偏好~测试的时候记得用命令行传参数,比如python your_script.py abc,这样node_name就会被设为abc啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:04