如何在运行Python转译的exe文件时隐藏WebDriver控制台窗口?
解决chromedriver.exe控制台窗口弹出问题
以下是针对Windows平台的有效解决方法,适用于Selenium 4及以上版本:
核心方案:通过Service配置隐藏chromedriver进程窗口
在初始化Chrome驱动时,利用Service类的creationflags参数,让chromedriver以无窗口模式启动:
from selenium import webdriver from selenium.webdriver.chrome.service import Service import subprocess import sys # 配置Chrome选项(如果不需要显示浏览器窗口,可添加无头模式参数) chrome_options = webdriver.ChromeOptions() # 可选:启用无头模式,隐藏浏览器窗口 chrome_options.add_argument("--headless=new") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--log-level=3") # 禁用chromedriver日志输出,减少冗余 # 创建Service对象,设置Windows平台专属的无窗口启动参数 service = Service(executable_path="chromedriver.exe") if sys.platform == "win32": # 让chromedriver进程启动时不显示控制台窗口 service.creationflags = subprocess.CREATE_NO_WINDOW # 初始化驱动 driver = webdriver.Chrome(service=service, options=chrome_options)
配合webdriver_manager自动管理chromedriver的情况
如果用webdriver_manager自动下载chromedriver,同样可以套用上述Service配置:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import subprocess import sys chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--headless=new") chrome_options.add_argument("--disable-gpu") service = Service(ChromeDriverManager().install()) if sys.platform == "win32": service.creationflags = subprocess.CREATE_NO_WINDOW driver = webdriver.Chrome(service=service, options=chrome_options)
打包exe的注意事项
打包时使用你原本的--windowed参数即可,确保chromedriver能被程序找到:
pyinstaller --windowed --onefile your_parser_script.py
如果是手动携带chromedriver,打包后需将chromedriver.exe放在exe同目录下;用webdriver_manager则无需手动携带,程序会自动下载对应版本的驱动。
内容的提问来源于stack exchange,提问作者Yurii
相关产品推荐
相关产品推荐

