使用pyinstaller摆脱chromedirver控制台窗口

时间:2018-10-04 09:39:00

标签: python python-3.x selenium selenium-chromedriver pyinstaller

我在 无头模式 中使用chromedriver。我使用pyinstaller作为一个exe文件编译脚本。一切正常,除了每次打开Chrome浏览器页面时都会得到以下 控制台窗口

enter image description here

我已经尝试单独使用--windowed,单独--noconsole--windowed--noconsole这两个选项,但是仍然可以看到此窗口。

如何摆脱它?

2 个答案:

答案 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)