Я использую Selenium для запуска тестов в Chrome через привязки API Python, и мне трудно понять, как настроить Chrome, чтобы сделать вывод console.log
из загруженного теста доступным. Я вижу, что есть методы get_log()
и log_types()
в объекте WebDriver, и я видел Получить консольный журнал Chrome, который показывает, как делать что-то на Java. Но я не вижу эквивалент типа Java LoggingPreferences
в API Python. Есть ли способ сделать то, что мне нужно?
Получение вывода console.log из Chrome с привязками API Selenium Python
Ответ 1
Ок, наконец-то разобрался
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# enable browser logging
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
driver = webdriver.Chrome(desired_capabilities=d)
# load the desired webpage
driver.get('http://foo.com')
# print messages
for entry in driver.get_log('browser'):
print(entry)
Записи, чье поле source
равно 'console-api'
соответствуют сообщениям консоли, а само сообщение хранится в поле message
.
Начиная с chromedriver, 75.0.3770.8, вы должны использовать goog: loggingPrefs вместо loggingPrefs:
d['goog:loggingPrefs'] = { 'browser':'ALL' }
Ответ 2
Чтобы завершить ответ: начиная с chromedriver 75.0.3770.8, вы должны использовать goog:loggingPrefs
вместо loggingPrefs
.
Смотрите Chromedriver changelog: http://chromedriver.chromium.org/downloads или эту ошибку: https://bugs.chromium.org/p/chromedriver/issues/detail?id=2976