【Python】Selenium:IE、Firefox操作時のコマンドプロンプトを非表示にする方法

  • 投稿 : 2020-06-28
  • 更新 : 2022-03-03
追記:2020/09/12
Python(64bit版)でも確認しました。
この辺りは、Python(32bit版)と変わりなさそうです。

補足

追記:2022/03/03
selenium 4になってからは、ライブラリー(Selenium)を修正しないで、Pythonのコード側でコマンドプロンプトを非表示できるようになりました。

当記事は、ライブラリー(Selenium)を修正することで実現しています。

参考

Selenium が webdriver.exe のコンソールを表示する件 : 料理人の備忘録

検索でいろいろ探してみて、IEの場合はこれぐらいしか解決する方法がないと思う。seleniumのライブラリを直接書き換えるので、あまりよい方法ではないとは思うが、ほかにないので・・。

Pythonのインストール場所

C:\Users\kuro\AppData\Local\Programs\Python

ライブラリとかも上記フォルダにあるみたい。

※kuroはログインユーザー名

ライブラリを修正する

C:\Users\kuro\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\selenium\webdriver\common

※64bit版の場合は 「Python38-32」=>「Python38」
※Python 3.10系の場合は 「Python38-32」=>「Python310」

上記フォルダにあるservice.pyを書き換える。

バージョンによって、すこし書き換え方が違います。パターン1、パターン2のどちらかを参考に‼!

パターン1

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, env=self.env,
                                close_fds=platform.system() != 'Windows',
                                stdout=self.log_file,
                                stderr=self.log_file,
                                stdin=PIPE,
                                creationflags=subprocess.CREATE_NO_WINDOW)

creationflags=subprocess.CREATE_NO_WINDOWを追加

パターン2

self.process = subprocess.Popen(cmd, env=self.env,
                                close_fds=platform.system() != 'Windows',
                                stdout=self.log_file,
                                stderr=self.log_file,
                                stdin=PIPE,
                                creationflags=self.creationflags)

↑ 修正前
↓ 修正後

self.process = subprocess.Popen(cmd, env=self.env,
                                close_fds=platform.system() != 'Windows',
                                stdout=self.log_file,
                                stderr=self.log_file,
                                stdin=PIPE,
                                creationflags=subprocess.CREATE_NO_WINDOW)
スポンサーリンク