Life & Style

PyInstallerを使うと簡単にPythonスクリプトを実行ファイル(.exe)にできる。作成した実行ファイルを実行すると、デフォルトでコンソールが表示される仕様となっている。

実行ファイル作成時に、コンソールを非表示にするnoconsoleオプションが用意されているが、このオプションを指定して作成した実行ファイルを実行して際、chromeのコンソールが表示される問題に直面する。

noconsole指定時に、chromeのコンソールも表示にし、完全にコンソールが表示されないようにする方法を解説する。

Seleniumの設定ファイルを編集

コンソールを非表示にするには、PythonフォルダーのLib\site-packages\selenium\webdriver\common\services.py のSeleniumの設定ファイルを編集する。

Python仮想環境のvenvを使用している場合はvenv/Lib\site-packages\selenium\webdriver\common\services.pyを編集する。

下準備として、下記import文を記載。

from subprocess import CREATE_NO_WINDOW 

70行目付近に記載の下記に追記する。

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

修正前

    def start(self):
        """
        Starts the Service.

        :Exceptions:
         - WebDriverException : Raised either when it can't start the service
           or when it can't connect to the service
        """
        try:
            cmd = [self.path]
            cmd.extend(self.command_line_args())
            self.process = subprocess.Popen(cmd, env=self.env,
                                            close_fds=platform.system() != 'Windows',
                                            stdout=self.log_file,
                                            stderr=self.log_file,
                                            stdin=PIPE)

変更後

    def start(self):
        """
        Starts the Service.

        :Exceptions:
         - WebDriverException : Raised either when it can't start the service
           or when it can't connect to the service
        """
        try:
            cmd = [self.path]
            cmd.extend(self.command_line_args())
            self.process = subprocess.Popen(cmd, env=self.env,
                                            close_fds=platform.system() != 'Windows',
                                            stdout=self.log_file,
                                            stderr=self.log_file,
                                            stdin=PIPE,
                                            creationflags = CREATE_NO_WINDOW)

PICK UP

  • コメント ( 0 )

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。