Python: Как скрыть вывод сообщений Chrome в Selenium? - PullRequest
0 голосов
/ 19 ноября 2018

Что я хочу сделать:

Я хочу открыть браузер Chrome с помощью Selenium ChromeDriver без вывода сообщений Chrome на консоль.

Что я сделал:

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

Вывод:

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

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

Я хочу скрыть выводимое сообщение «DevTools listening ...»

Что я пытался решить:

Использование contextlib

from selenium import webdriver
import contextlib

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

Использование 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')

Использование уровня журнала = 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)

Но сообщение по-прежнему отображается.Как скрыть выводимое сообщение «DevTools listen on ...» в Python?

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

аналогичный вопрос в DevTools прослушивает ws: //127.0.0.1: 57671 / devtools / browser / 8a586f7c-5f2c-4d10-8174-7a7bf50e49b5 с Selenium и Python .

ответ:

база на Chanticleer в скрытой консоли chromeDriver на python

Найдите и отредактируйте этот файл следующим образом: он находится по адресу Lib \ site-packages \ selenium \ webdriver \ common \ services.py в папке Python.

Отредактируйте функцию 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

Прекрасно работает для меня (python3.7, селен 3.141.0)

, пожалуйста, отдайте мне должное тратить часы на поиск ответа.

0 голосов
/ 19 ноября 2018

Это сообщения 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)

Также из любопытства могу я спросить, почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...