python selenium 运行时弹出窗口(弹出driver的cmd窗口)

python selenium 运行时弹出窗口

近期在做一个网页代填项目时,用到了python的selenium,虽然实现了代填功能但是每次运行时都会弹出窗口,初始是python窗口,后续改进了又弹出了driver的窗口。在我看来是无伤大雅的,不过测试不接受,只能改,经过了各种尝试与搜索最后终算是较完美的解决了。

去除python窗口

项目初始是通过C++的process去调起python然后执行脚本的,后来发现会弹出python窗口。

使用的命令为

python.exe ie.py

效果如下

在这里插入图片描述

打开了页面但是同时会出现一个python窗口。

解决方案

改用pythonw.exe。

在python.exe文件的同级目录下同样存在一个名为pythonw.exe的可执行文件,它与pyhon.exe的区别是pythonw.exe是无窗口的python可执行程序,运行后将在后台运行脚本,不会出现窗口,也不会有输出。

去除driver窗口

改用了pythonw.exe窗口后发现python窗口是不弹了,但是运行chrome与ie的时候,会弹出对应的driver窗口。

效果如下:

在这里插入图片描述

解决方案

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

具体如下:

在这里插入图片描述

修改selenium/webdriver/common/service.py。

在这里插入图片描述

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

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

这样修改了之后再运行就不会有弹窗出现了

ps:https://www.jianshu.com/p/8e278a776475 实现类继承的博主

Selenium是一个流行的自动化测试工具,用于控制浏览器操作,包括打开特定的网页。在Windows环境下,如果你想通过Selenium在Chrome浏览器中运行任务并隐藏CMD窗口,你可以使用Python的`subprocess`模块结合ChromeDriverSelenium WebDriver的一个实现,专门针对Chrome浏览器)来实现这个过程。 首先,你需要安装selenium、webdriver_manager(管理ChromeDriver的库)和pywin32(处理Windows API): ```bash pip install selenium webdriver_manager pywinauto ``` 然后,编写一个Python脚本,例如: ```python from selenium import webdriver import subprocess # 使用webdriver_manager下载最新的ChromeDriver并自动设置环境变量 from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) # 设置Chrome选项,隐藏命令行窗口 options = webdriver.ChromeOptions() options.add_argument('--headless') # 隐藏UI options.add_argument('--disable-gpu') # 可能需要防止图形错误 options.add_experimental_option('excludeSwitches', ['enable-logging']) # 关闭日志输出 # 实例化隐藏CMD窗口的驱动 driver = webdriver.Chrome(chrome_options=options) # 执行你要的操作,比如打开URL url = 'https://www.example.com' driver.get(url) # 等待页面加载完成后关闭浏览器(如果需要) driver.quit() # 隐藏CMD窗口 subprocess.Popen(['taskkill', '/F', '/IM', 'cmd.exe'], creationflags=subprocess.CREATE_NO_WINDOW) ``` 在这个例子中,`headless`参数让Chrome在无界面模式下运行,而`CREATE_NO_WINDOW`标志会创建一个新的进程,不显示CMD窗口。完成任务后,脚本会关闭浏览器并杀死CMD进程以隐藏窗口
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值