Selenium Chromedriver.exe继续显示终端黑屏,即使在执行无头后也是如此

tpgth1q7  于 2023-08-05  发布在  其他
关注(0)|答案(5)|浏览(274)

我试图用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窗口:Terminal IMG
如何禁用chromedriver.exe弹出的此终端窗口?
要澄清的是,这不是出现在终端中的主程序的问题。当主程序执行chromedriver.exe时,这是一个问题。

tjrkku2a

tjrkku2a1#

您错误地将参数传递给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'])

字符串

oug3syen

oug3syen2#

经过进一步的研究,我找到了解决这个问题的办法。我添加了一个服务创建标志 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)

字符串

5jdjgkvh

5jdjgkvh3#

Unable to hide Chromedriver console with CREATE_NO_WINDOW

chrome_service.creationflags = CREATE_NO_WINDOW

字符串
CREATE_NO_WINDOW仅适用于selenium 4.5.0,不适用于更高版本

huus2vyu

huus2vyu4#

对我来说,CREATE_NO_WINDOW没有给出任何信息,所以我使用过滤器执行了一个taskkill,只停止chromedriver.exe窗口

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

字符串

2hh7jdfx

2hh7jdfx5#

import os,logging
os.environ["WDM_LOG_LEVEL"] = str(logging.WARNING)

字符串

相关问题