运行Selenium打包的可执行文件时如何不弹出chromedriver.exe窗口
解决PyInstaller打包Selenium程序后chromedriver控制台弹出的问题
核心解决方案
方法1:调整ChromeService启动参数(适用于Selenium 4.0+版本,无需修改源码,优先推荐)
Windows系统下可以通过给ChromeDriver的服务进程设置CREATE_NO_WINDOW标志,完全隐藏其控制台窗口,代码示例如下:
from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService import subprocess # 配置Chrome浏览器基础选项 chrome_options = webdriver.ChromeOptions() # 若不需要显示浏览器界面,可开启无头模式 # chrome_options.add_argument("--headless=new") # 配置服务启动参数,添加无窗口创建标志 chrome_service = ChromeService( # 如果你手动指定chromedriver路径再添加该行,使用webdriver-manager自动管理可省略 # executable_path="chromedriver.exe路径", creationflags=subprocess.CREATE_NO_WINDOW ) # 初始化浏览器对象 driver = webdriver.Chrome(service=chrome_service, options=chrome_options)
修改代码后重新用PyInstaller打包即可,不需要调整原有打包参数。
方法2:修改Selenium源码(适用于Selenium 3.x旧版本)
如果你的项目依赖Selenium 3.x无法升级,可以修改Selenium底层的服务启动逻辑:
- 找到Python环境下的
Lib/site-packages/selenium/webdriver/common/service.py文件 - 找到
start方法中调用subprocess.Popen的代码行 - 给
Popen方法添加参数creationflags=0x08000000(对应Windows无窗口启动标志) - 保存文件后重新打包程序即可
注意事项
- 上述无窗口启动标志仅适用于Windows系统,Mac、Linux系统默认不会弹出子进程控制台窗口,无需额外配置
- 建议先将PyInstaller升级到最新版本,部分旧版本PyInstaller存在子进程窗口隐藏的兼容性bug,升级命令为
pip install --upgrade pyinstaller
内容的提问来源于stack exchange,提问作者Xaviere
相关产品推荐
相关产品推荐

