pyinstaller打包selenium后弹出webdriver命令行窗口的解决方法

最近在使用tkinter来开发一个GUI程序,用到了selenium的headless模式。代码调试妥当,准备用pyinstaller打包成exe文件,却发现在pycharm里面一切正常,打包后会弹出一个黑框,影响体验:

有的同学还会有类似以下日志

DevTools listening on ws://127.0.0.1:12345...........

搜索一番之后大概发现了网上说的2种方案

  1. pyinstaller 使用 --windowed参数
  2. 修改.../Lib/sit-packages/selenium/webdriver/common/service.py的源码,将76行的creationflags改为一个神秘数字134217728(其实就是0x8000000)

长话短说,我本来就已经使用了-w参数编译,所以方法1不是我遇到的问题的原因,方法2才是。但是这么写比较粗鲁,更好的方法应该是写一个子类继承Service类(无奈selenium官方不提供修改该参数的公有方法)。

原来的写法(会弹窗)

from selenium.webdriver import ChromeOptions, Chrome
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


def initial_driver():
    my_options = ChromeOptions()
    my_options.add_argument('--headless')
    my_options.add_experimental_option('excludeSwitches', ['enable-logging'])
    return Chrome(options=my_options, service=Service(ChromeDriverManager().install()))

改为这样(不弹窗):

from selenium.webdriver import ChromeOptions, Chrome
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


class MyService(Service):
    def __init__(self, executable_path: str,
                 port: int = 0, service_args=None,
                 log_path: str = None, env: dict = None):
        super(Service, self).__init__(
            executable_path,
            port,
            service_args,
            log_path,
            env,
            "Please see https://chromedriver.chromium.org/home")
        self.creationflags = 0x8000000


def initial_driver():
    my_options = ChromeOptions()
    my_options.add_argument('--headless')
    my_options.add_experimental_option('excludeSwitches', ['enable-logging'])
    return Chrome(options=my_options, service=MyService(ChromeDriverManager().install()))

其中,下面这句的作用就是关闭“DevTools listening on ws://127.0.0.1:12345...........”的日志输出

my_options.add_experimental_option('excludeSwitches', ['enable-logging'])

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值