【问题标题】:Getting rid of chromedirver console window with pyinstaller使用 pyinstaller 摆脱 chromedriver 控制台窗口
【发布时间】:2019-03-09 15:49:03
【问题描述】:

我在 headless 模式下使用 chromedriver。我使用 pyinstaller 作为一个 exe 文件编译脚本。一切正常,除了每当我打开 chrome 页面时都会得到以下 控制台窗口:

我已经尝试了单独的选项--windowed、单独的--noconsole、--windowed 和--noconsole,但我仍然得到这个窗口。

我怎样才能摆脱它?

【问题讨论】:

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


    【解决方案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,问题又来了。

      -- 我推迟了这个问题,因为它不是致命错误,而且在我的应用程序中还有更重要的问题需要解决。所以当我试图解决另一个问题时,我找到了这个答案:https://stackoverflow.com/a/56839122/13988982。

      -- 基本上它是说改变运行 pyinstaller 时使用的命令的顺序,实际上会影响 EXE 文件的打包方式。 (我不确定为什么)。

      -- 我跑了:pyinstaller --add-binary "chromedriver.exe;." --noconsole --onefile myApp.py

      这最终使控制台窗口不再显示。

      希望这对任何人都有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-09
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 2017-08-11
        • 2014-11-10
        相关资源
        最近更新 更多