解决PyInstaller打包selenium脚本时弹出driver终端窗口

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

解决PyInstaller打包selenium脚本时弹出driver终端窗口

  1. 找到service.py
    C:\Users\XXX\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\common\service.py
  2. 添加creationflags
    在第77行添加:
    creationflags=134217728
  3. 使用PyInstaller打包
    pyinstaller -F -w -i xxx.ico xxx.py
    pyinstaller selenium,python,开发语言
    有的解决方法是修改 …/Lib/sit-packages/selenium/webdriver/common/service.py 里的 creationflags=134217728,但selenium 版本升级了,这种方法不行。因为其他人的python 和 selenium 版本跟我的不一样,导致不能照搬但思路可以参考。我的python 版本是Python 3.10.10 ,selenium 4.8.2
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
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 = 134217728
        self.creation_flags = 134217728

然后在新建driver 时 webdriver.Chrome 添加参数 service,把自定义的Service 类MyService(…) 传入 ,

		chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.add_experimental_option("excludeSwitches", ['enable-logging'])
​
        driver = webdriver.Chrome(chrome_options=chrome_options,
                                  service=MyService(ChromeDriverManager().install()))

已经有博主通过实现自己的类让窗口不再弹出,借鉴他的思路,因为项目可以直接提供python环境,所以我选择了直接修改源码的代码实现。
pyinstaller selenium,python,开发语言

# 在service.py的60行开始添加几行代码,修改启动参数

si = subprocess.STARTUPINFO()
si.dwFlags = subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW
si.wShowWindow = subprocess.SW_HIDE    
import subprocess

def launchWithoutConsole(command, args):

	"""Launches 'command' windowless and waits until finished"""
	startupinfo = subprocess.STARTUPINFO()
	startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
	return subprocess.Popen([command] + args, startupinfo=startupinfo).wait()

if __name__ == "__main__":

# test with "pythonw.exe"

launchWithoutConsole("d:\\bin\\gzip.exe", ["-d", "myfile.gz"])

解决无法删除chromdriver.exe的问题

问题描述
想要删除chromdriver.exe时,提示正在运行中,不可删除,可我们的浏览器已经关闭了呀
此时打开任务管理器就会发现后台还有很多个 chrom、chromedriver 在运行着
原来,每次使用 selenium后不会自动结束 chrome.exe 进程
解决

方法1:直接在任务管理器中一个一个关闭进程即可

方法2:通过python脚本自动关闭文章来源地址https://www.toymoban.com/news/detail-773171.html

import os
os.system('taskkill /im chromedriver.exe /F')
os.system('taskkill /im chrome.exe /F')

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

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

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

相关文章

  • selenium 网页自动化-在访问一个网页时弹出的浏览器窗口,我该如何处理?

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

    2024年02月07日
    浏览(40)
  • selenium打开chrome浏览器时弹出设置页面:Mircrosoft Defender 防病毒要重置您的设置

    1、win+r 输入 regedit打开注册表 2、查找指定目录:计算机HKEY_CURRENT_USERSoftwareGoogleChrome 注意是HKEY_CURRENT_USER文件加不是HKEY_USERS文件夹 3、删除TriggeredReset文件夹即可 注意事项:这里如果使用ctrl + f直接输入TriggeredReset可能会定位到HKEY_USERS文件夹下,该文件夹下也有一个Trigge

    2024年02月11日
    浏览(43)
  • 电脑联网时弹出619,691或其他数字提示的解决方法

    最近我的电脑联网时总是弹出619,691或是其他数字提示的情况,很是头疼!也不知道怎么解决?后来终于找到解决方法,现在小编就为大家分享电脑联网时弹出619,691或其他数字提示的解决方法,一起来看看吧! 方法/步骤 1、首先我们打开电脑上的联网客户端,我的是联通的宽

    2024年02月08日
    浏览(28)
  • 微信小程序解决多级页面返回及实现返回时弹出层提示

    解决微信小程序中点击页面返回按钮时需要返回多级的问题 最初使用的方法是在页面的onUnload中再写一个wx.navigateBack()方法,基本上也能实现效果,但不太完美,会出现一些情况: 如果当前页面中有按钮需点击后跳转到其他页面时,页面会出现先返回上一页再跳转到目标页面

    2024年01月16日
    浏览(35)
  • IntelliJ IDEA 2023.2.1使用Git时弹出“使用访问令牌登录”问题解决

    升级为IntelliJ IDEA 2023.2.1后,使用Git时弹出“使用访问令牌登录”的窗口,习惯使用Git帐号密码登录的用户,面对这个突如其来的弹窗真的很懵。 停用或卸载IntelliJ IDEA 2023.2.1中的GitLab内置捆绑插件 绝大部分国内的企业都是采用的GitLab搭建的Git代码托管平台,IntelliJ IDEA 2023.2

    2024年02月10日
    浏览(34)
  • pyinstaller打包selenium报错找不到webdriver

    遇到的情况: 使用pyinstaller -w -F打包selenium 在大部分机器上运行正常 但是少数机器上运行报错 selenium版本:3.141.0 报错内容: Message: ‘chromedriver.exe’ executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home 关键代码: 在网上查了许多方法,比如将chromedriver和e

    2024年02月16日
    浏览(46)
  • PyInstaller 完美打包 Python 脚本,输出结构清晰、便于二次编辑的打包程序

    如果我要写一个 Python 项目,打包成 exe 运行(方便在没有 Python 的电脑上使用),我需要打包出的根目录结构美观,没有多余的、杂乱的依赖文件在那里碍眼,而且需要在发现 bug 时,我还需要能够修改里面的代码后,无需再次打包,就能正常运行,该怎么做呢? 就以一个

    2024年02月07日
    浏览(33)
  • 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日
    浏览(35)
  • vue中使用element-ui,重复点击按钮或多个请求同时报错时弹出多个message弹框解决方法

    1. 用这种 2. 参考: vue中使用element-ui,重复点击按钮或多个请求同时报错时弹出多个message弹框解决方法_donggua_123的博客-CSDN博客

    2024年02月11日
    浏览(36)
  • 执行hdfs dfs -mkdir input时弹出mkdir: `hdfs://localhost:9000/user/root‘: No such file or directory的解决方法

    本文涉及的操作步骤来源于:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html#Execution 在执行Pseudo-Distributed Operation的Execution以下步骤时,弹出了 mkdir: hdfs://localhost:9000/user/root\\\': No such file or directory 错误。 好久才反应过来,原来是在上一步没有理解清楚 us

    2024年02月07日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包