Python:如何在 Selenium 中隐藏输出 Chrome 消息?

Dip*_*lui 7 python selenium python-3.x selenium-chromedriver selenium-webdriver

我想做的事:

我想使用 Selenium ChromeDriver 打开 Chrome 浏览器,而不将 Chrome 消息输出到控制台。

我做了什么:

from selenium import webdriver
driver = webdriver.Chrome(r'C:\Users\u1\Documents\scripts\chromedriver.exe')
Run Code Online (Sandbox Code Playgroud)

输出:

from selenium import webdriver
driver = webdriver.Chrome(r'C:\Users\u1\Documents\scripts\chromedriver.exe')
Run Code Online (Sandbox Code Playgroud)

我想隐藏输出消息“DevTools Listening on...”

我试图解决这个问题:

使用上下文库

from selenium import webdriver
import contextlib

with contextlib.redirect_stdout(None):
   driver = webdriver.Chrome(r'C:\Users\u1\Documents\scripts\chromedriver.exe')
Run Code Online (Sandbox Code Playgroud)

使用 devnull

from selenium import webdriver
import subprocess

devnull = subprocess.DEVNULL
subprocess.Popen(open_browser(), stdout=devnull, stderr=devnull)
def open_browser():
    driver = webdriver.Chrome(r'C:\Users\u1\Documents\scripts\chromedriver.exe')
Run Code Online (Sandbox Code Playgroud)

使用日志级别=3

chrome_options = Options()
chrome_options.add_argument("--log-level=3")
driver = webdriver.Chrome(r'C:\Users\u1\Documents\scripts\chromedriver.exe', chrome_options=chrome_options)
Run Code Online (Sandbox Code Playgroud)

但该消息仍然显示。如何在 Python 中隐藏输出消息“DevTools Listening on...”?

小智 13

将此选项添加到您的驱动程序中,您的问题将得到解决:

options = webdriver.ChromeOptions()<br>
options.add_experimental_option('excludeSwitches', ['enable-logging'])
Run Code Online (Sandbox Code Playgroud)


Wah*_*ram 7

DevTools 中使用 Selenium 和 Python 监听 ws://127.0.0.1:57671/devtools/browser/8a586f7c-5f2c-4d10-8174-7a7bf50e49b5 中的类似问题。

答案是:

基于 Chanticleer 在 python 中隐藏 chromeDriver 控制台

找到并编辑此文件,如下所示:位于 Python 文件夹中的 Lib\site-packages\selenium\webdriver\common\services.py 中。

通过添加创建标志来编辑 Start() 函数:creationflags=CREATE_NO_WINDOW

from win32process import CREATE_NO_WINDOW

def start(self):
    """
    Starts the Service.

    :Exceptions:
     - WebDriverException : Raised either when it can't start the service
       or when it can't connect to the service
    """
    try:
        cmd = [self.path]
        cmd.extend(self.command_line_args())
        self.process = subprocess.Popen(cmd, env=self.env,
                                        close_fds=platform.system() != 'Windows',
                                        stdout=self.log_file, stderr=self.log_file, creationflags=CREATE_NO_WINDOW)
    except TypeError:
        raise
Run Code Online (Sandbox Code Playgroud)

非常适合我(python3.7,selenium 3.141.0)

请相信我花了很多时间寻找答案。

  • 如果您发现一个问题具有相似的答案,正确的程序是发表评论。不过,在你做到这一点之前,你需要赢得一些声誉。在此期间,请不要发布重复的答案。 (3认同)

Ber*_*ard 3

这些是 chrome 消息,因此您需要设置 Chrome 日志级别的选项来隐藏这些消息,将日志级别设置为--log-level=3应该足够了(仅致命日志消息。

from selenium.webdriver.chrome.options import Options
[...]
chrome-options = Options()
chrome-options.add_argument("--log-level=3")
driver = webdriver.Chrome(chrome_options=chrome-options)
Run Code Online (Sandbox Code Playgroud)

出于好奇,我想问一下为什么?

  • 我用谷歌搜索并早些时候找到了同样的解决方案。很多人在 stackoverflow 上建议了这个解决方案。但这并没有解决我的问题。所以,我想用不同的方式来解决它。 (2认同)