我在 无头模式 中使用chromedriver。我使用pyinstaller作为一个exe文件编译脚本。一切正常,除了每次打开Chrome浏览器页面时都会得到以下 控制台窗口 :
我已经尝试单独使用--windowed
,单独--noconsole
,--windowed
和--noconsole
这两个选项,但是仍然可以看到此窗口。
如何摆脱它?
答案 0 :(得分:1)
我遇到了类似的问题,我想分享一下我是如何解决的。首先,我将描述上下文:
-- 我的脚本运行良好,它可以正常打开 chrome 窗口(不是无头的)。
-- 我使用了 pyinstaller(使用 onefile 和 noconsole 命令)。
-- EXE 可以工作,但每次打开 chrome 窗口时,它也会打开一个控制台窗口,我不记得窗口说了什么,但这不是错误。
-- 我尝试了 Ahmed 发布的解决方案,当天就奏效了。
-- 第二天在各种电脑上试了EXE,问题又来了。
-- 我提出了这个问题,因为它不是致命错误,而且我的应用程序中还有更重要的问题需要解决。因此,当我试图解决另一个问题时,我找到了这个答案:https://stackoverflow.com/a/56839122/13988982。
--基本上它说更改运行 pyinstaller 时使用的命令的顺序实际上会影响 EXE 文件的打包方式。 (我不知道为什么)。
-- 我运行: pyinstaller --add-binary "chromedriver.exe;." --noconsole --onefile myApp.py
这最终使控制台窗口不再显示。
希望这对任何人都有用。
答案 1 :(得分:0)
我能够找到以下答案,并且对我来说效果很好:
为避免获取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)