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

这篇具有很好参考价值的文章主要介绍了pyinstaller打包selenium后弹出webdriver命令行窗口的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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...........”的日志输出文章来源地址https://www.toymoban.com/news/detail-502839.html

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

到了这里,关于pyinstaller打包selenium后弹出webdriver命令行窗口的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python ---- pyInstaller 的常用打包命令

    1. 简介 PyInstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。 PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linu

    2024年02月14日
    浏览(47)
  • 解决edge关闭更新后弹出“无法更新”提示的问题

    利用诸多教程关闭edge更新后,每次打开edge的第一个窗口都会弹出如下图提示,若是此时正在输入或按下回车则会被此窗口逼疯······ 解决方法并不困难却少有教程,本文作为初步总结与补充,参考网址: [1] https://zhuanlan.zhihu.com/p/481696765  [2] https://www.bilibili.com/read/cv117

    2024年02月04日
    浏览(53)
  • 解决pyinstaller -w打包selenium和pyqt5出现的黑色飞窗

    使用 pyinstaller -F -w main.py 命令可以将selenium和pyqt5打包成一个 仅有窗口无控制台 的可执行文件,但在执行exe文件之后,只要程序执行到selenium模块的地方,会出现一个 黑色控制台窗口,或一闪而过 ,非常影响美观和使用。 找到selenium库中的 service.py 或 selenium_manager.py (低版本

    2024年02月04日
    浏览(40)
  • Pyinstaller 打包 django 项目如何将命令行参数加入?

    起因 Pyinstaller 打包 django 项目,打包成 manage.exe 后用命令行 cmd manage.exe runserver 0.0.0.0:8001 --noreload 来运行感觉很不方便。 希望能够直接把命令行参数也打包进去,直接运行 exe 。我走了些弯路,但最终实现了。 我看到有人说 新建一个 main.py 在里面用 os.system : 看起来可行,在

    2024年02月13日
    浏览(42)
  • Putty连接服务器后弹出Network error: Software caused connection abort

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 在使用putty连接服务器时,连接成功后过一会弹出如下错误 字面意思大概是 网络错误:

    2024年02月05日
    浏览(48)
  • python selenium 运行driver时一直弹出控制台CMD窗口怎么办

    1.python selenium 运行driver时一直弹出控制台CMD窗口,且不断报以下错误应该怎么处理? DevTools listening on ws://127.0.0.1:51303/devtools/browser/6d5f8d32-1e30-4749-ad54-17f08ee3a983 真的非常影响心情啊!!!  2.一直在网上搜索,按照大家所说的用以下代码还是不行: options = webdriver.ChromeOptions(

    2024年02月11日
    浏览(49)
  • 基于华为商城的抢单工具python3.9的selenium webdriver使用及打包

    本文基于华为商城的抢单工具,讲解一下python3.9的selenium webdriver使用,网上也有相关的资料,但在自己动手做的过程中还是遇到了一些波折,想拿出来跟大家一起分享。开篇先放个图: 主要从三个大方面说明:开发环境搭建、工程打包、过程中所遇问题整理 话不多说,从头

    2024年04月09日
    浏览(72)
  • 在访问一个网页时弹出的浏览器窗口,如何用selenium 网页自动化解决?

    相信大家在使用selenium做网页自动化时,会遇到如下这样的一个场景: 在你使用get访问某一个网址时,会在页面中弹出如上图所示的弹出框。 首先想到是利用Alert类来处理它。 然而,很不幸,Alert类处理的结果就是没有结果,并不能够将这个弹出框关闭掉。 无法用处理alert的

    2024年02月10日
    浏览(46)
  • selenium 网页自动化-在访问一个网页时弹出的浏览器窗口,我该如何处理?

    相信大家在使用selenium做网页自动化时,会遇到如下这样的一个场景: 在你使用get访问某一个网址时,会在页面中弹出如上图所示的弹出框。 首先想到是利用Alert类来处理它。 然而,很不幸,Alert类处理的结果就是没有结果,并不能够将这个弹出框关闭掉。 无法用处理alert的

    2024年02月07日
    浏览(49)
  • VSCode使用background-cover插件后弹出“code安装似乎损坏,请重新安装“,有时顶部显示“不受支持“--解决方法

    最近在使用vscode的时候发现有时候右下角会弹出\\\"code安装似乎损坏,请重新安装\\\",顶部显示\\\"不受支持\\\"的问题。  经过排查,发现是background-cover这个插件的问题,原因应该是通过这个插件去给vscode设置自定义图片作为背景的时候修改了vscode本身的配置文件,导致了vscode认为安装

    2024年02月09日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包