问题描述
我在无头模式下使用 chromedriver。 我使用 pyinstaller 将脚本编译为一个 exe 文件。 一切正常,除了每次打开 chrome 页面时都会出现以下控制台窗口:
我已经尝试了选项--windowed
单独, --noconsole
单独,-- --windowed
和--noconsole
一起但我仍然得到这个窗口。
我怎样才能摆脱它?
1楼
我能够找到以下答案,它对我来说非常有效:
为避免获得 chromedriver 的控制台窗口,请打开文件
Python\\Lib\\site-packages\\selenium\\webdriver\\common\\service.py
和改变
self.process = subprocess.Popen(cmd, env=self.env, close_fds=platform.system() != 'Windows', stdout=self.log_file, stderr=self.log_file, stdin=PIPE)
到:
self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE ,stderr=PIPE, shell=False, creationflags=0x08000000)
2楼
我有一个类似的问题,我想分享我如何解决它。 首先,我将描述上下文:
-- 我的脚本运行良好,它可以正常打开 chrome 窗口(不是无头的)。
-- 我使用了 pyinstaller(使用 onefile 和 noconsole 命令)。
-- EXE 可以工作,但每次打开 chrome 窗口时,它也会打开一个控制台窗口,我不记得窗口说了什么,但这不是错误。
-- 我尝试了 Ahmed 发布的解决方案,当天就奏效了。
-- 第二天我在各种电脑上试了EXE,问题又来了。
-- 我推迟了这个问题,因为它不是一个致命的错误,而且我的应用程序中有更重要的问题需要解决。 因此,当我试图解决另一个问题时,我找到了这个答案: : 。
-- 基本上它说更改运行 pyinstaller 时使用的命令的顺序实际上会影响 EXE 文件的打包方式。 (我不确定为什么)。
-- 我运行: pyinstaller --add-binary "chromedriver.exe;." --noconsole --onefile myApp.py
这最终使控制台窗口不再显示。
希望这对任何人都有用。