Dipankar Nalui
Dipankar Nalui

Reputation: 1261

Python: How to hide output Chrome messages in Selenium?

What I want to do:

I want to open Chrome browser using Selenium ChromeDriver without the Chrome messages getting output to the console.

What I did:

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

Output:

C:\Users\u1\Documents\scripts>python test.py

DevTools listening on ws://127.0.0.1:50605/devtools/browser/11c9063a-44ce-4b39-9566-9e6c6270025c

I want to hide the output message "DevTools listening on..."

What I tried to solve this:

Using contextlib

from selenium import webdriver
import contextlib

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

Using 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')

Using log-level=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)

But still the message is getting displayed. How do I hide the output message "DevTools listening on..." in Python?

Upvotes: 8

Views: 14457

Answers (5)

mirhossein
mirhossein

Reputation: 737

passing --show-capture=no does the job

Upvotes: -1

Elq_eng
Elq_eng

Reputation: 11

There is a way to modify the library selenium to solve this problem.

you can search directly with the next route, for modify the lines the that subprocess, this close the message that apper in the console.

you go to main folder In the route /venv/selenium/webdriver/common/service.py you modify the next lines, please you write this.

cmd = [self.path]
cmd.extend(self.command_line_args())
self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, 
                                stderr=PIPE, shell=False,
                               creationflags=0x08000000)

with this piece of code you will get the solution.

Upvotes: -1

Pavan Kumar
Pavan Kumar

Reputation: 151

Add this option to your driver and your problem will be solved:

options = webdriver.ChromeOptions()<br>
options.add_experimental_option('excludeSwitches', ['enable-logging'])

Upvotes: 15

Wahyu Bram
Wahyu Bram

Reputation: 425

similar question in DevTools listening on ws://127.0.0.1:57671/devtools/browser/8a586f7c-5f2c-4d10-8174-7a7bf50e49b5 with Selenium and Python.

the answer is:

base on Chanticleer in hide chromeDriver console in python

Locate and edit this file as follows: located at Lib\site-packages\selenium\webdriver\common\services.py in your Python folder.

Edit the Start() function by adding the creation flags this way: 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

Works Perfectly for me (python3.7, selenium 3.141.0)

please give me credit to spending hours for searching the answer.

Upvotes: 7

Bernhard
Bernhard

Reputation: 1273

Those are chrome messages, so you need to set the options for the Chrome-Log Level to hide those messages, setting the log-level to --log-level=3 should be enough (only fatal log messages.

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

Also out of curiosity, might I ask why?

Upvotes: 4

Related Questions