即使以无头方式执行后,Selenium Chromedriver.exe 仍继续显示终端黑屏

发布于 2025-01-10 06:36:06 字数 812 浏览 1 评论 0原文

我正在尝试使用 Python 中的 Selenium 自动化网站流程。我正在使用 ChromeDriverManager 在执行程序时安装正确版本的 Chrome 驱动程序。我有一个 GUI 程序,它通过命令行参数调用我的 Selenium 程序。我的目标是在没有 chromedriver.exe 任何额外弹出窗口的情况下执行该程序。我有以下代码:

op = webdriver.ChromeOptions()
op.ignore_zoom_level = True
op.add_argument('headless')
op.add_argument('disable-gpu')
op.add_argument('disable-infobars')
op.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(ChromeDriverManager().install(), options=op, service_args=['CREATE_NO_WINDOW'])

当我通过脚本运行此代码时,我看不到 chromedriver.exe 中的任何窗口,但是,当我通过 pyinstaller 导出到 EXE 包时,会弹出 chromedriver.exe 窗口: 终端 IMG

如何禁止 chromedriver.exe 弹出此终端窗口?

澄清一下,这不是终端中出现的主程序的问题。当主程序执行chromedriver.exe时出现问题。

I am attempting to automate a website process with Selenium in Python. I am using ChromeDriverManager to install the correct version of Chrome driver upon the execution of my program. I have a GUI program that calls my Selenium program via command-line arguments. My goal is to execute this program without any extra pop-ups from chromedriver.exe. I have the following code:

op = webdriver.ChromeOptions()
op.ignore_zoom_level = True
op.add_argument('headless')
op.add_argument('disable-gpu')
op.add_argument('disable-infobars')
op.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(ChromeDriverManager().install(), options=op, service_args=['CREATE_NO_WINDOW'])

When I run this code via script I see no windows from chromedriver.exe, however, when I export to EXE package via pyinstaller a chromedriver.exe window pops up:
Terminal IMG

How do I disable this terminal window from chromedriver.exe from popping up?

To clarify this is not an issue with the main program appearing in the terminal. It is an issue when the main program executes chromedriver.exe.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浅唱々樱花落 2025-01-17 06:36:06

您错误地将参数传递给 ChromeOptions。所有参数中都缺少 --
请尝试这个:

op = webdriver.ChromeOptions()
op.ignore_zoom_level = True
op.add_argument('--headless')
op.add_argument('--disable-gpu')
op.add_argument('--disable-infobars')
op.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(ChromeDriverManager().install(), options=op, service_args=['CREATE_NO_WINDOW'])

You are passing arguments to ChromeOptions wrongly. You are missing -- in all the arguments.
Please try this:

op = webdriver.ChromeOptions()
op.ignore_zoom_level = True
op.add_argument('--headless')
op.add_argument('--disable-gpu')
op.add_argument('--disable-infobars')
op.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(ChromeDriverManager().install(), options=op, service_args=['CREATE_NO_WINDOW'])
醉城メ夜风 2025-01-17 06:36:06

经过进一步研究,我找到了该问题的解决方案。我添加了一个服务创建标志CREATE_NO_WINDOW,这解决了问题。代码变更参考如下:

from selenium.webdriver.chrome.service import Service as ChromeService
from subprocess import CREATE_NO_WINDOW

op = webdriver.ChromeOptions()
op.ignore_zoom_level = True
op.add_argument('--headless')
op.add_argument('--disable-gpu')
op.add_argument('--disable-infobars')
op.add_experimental_option('excludeSwitches', ['enable-logging'])

serv = ChromeService(ChromeDriverManager().install())
serv.creationflags = CREATE_NO_WINDOW

driver = webdriver.Chrome(service=serv, options=op)

Upon additional research, I found a solution to the issue. I added a service creation flag CREATE_NO_WINDOW and this solved the issue. Code change reference below:

from selenium.webdriver.chrome.service import Service as ChromeService
from subprocess import CREATE_NO_WINDOW

op = webdriver.ChromeOptions()
op.ignore_zoom_level = True
op.add_argument('--headless')
op.add_argument('--disable-gpu')
op.add_argument('--disable-infobars')
op.add_experimental_option('excludeSwitches', ['enable-logging'])

serv = ChromeService(ChromeDriverManager().install())
serv.creationflags = CREATE_NO_WINDOW

driver = webdriver.Chrome(service=serv, options=op)
深居我梦 2025-01-17 06:36:06

无法使用 CREATE_NO_WINDOW 隐藏 Chromedriver 控制台

chrome_service.creationflags = CREATE_NO_WINDOW

仅 CREATE_NO_WINDOW 有效使用硒 4.5.0 和
不适用于更高版本

Unable to hide Chromedriver console with CREATE_NO_WINDOW

chrome_service.creationflags = CREATE_NO_WINDOW

CREATE_NO_WINDOW only works with selenium 4.5.0 and
doesn't work with higher version

暖心男生 2025-01-17 06:36:06

对我来说,CREATE_NO_WINDOW 没有提供任何信息,因此我使用过滤器创建了一个任务终止程序,仅停止 chromedriver.exe 窗口

# /fi "memusage lt 12000" allows to filter processes under 12 Mb
subprocess.call('taskkill /f /IM chromedriver.exe /fi "memusage lt 12000"')

For me CREATE_NO_WINDOW gave nothing so I made a taskkill with filters to stop only the chromedriver.exe window

# /fi "memusage lt 12000" allows to filter processes under 12 Mb
subprocess.call('taskkill /f /IM chromedriver.exe /fi "memusage lt 12000"')
伴随着你 2025-01-17 06:36:06
import os,logging
os.environ["WDM_LOG_LEVEL"] = str(logging.WARNING)
import os,logging
os.environ["WDM_LOG_LEVEL"] = str(logging.WARNING)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文