web-dev-qa-db-fra.com

Obtenir la sortie console.log de Chrome avec Selenium Python

J'utilise Selenium pour exécuter des tests dans Chrome via les liaisons API Python, et j'ai du mal à comprendre comment configurer Chrome pour rendre disponible la sortie console.log Du test chargé. Je vois qu'il existe des méthodes get_log() et log_types() sur l'objet WebDriver, et je ' ai vu Récupérer le journal de la console de chrome qui montre comment faire les choses en Java. Mais je ne vois pas d'équivalent du type LoggingPreferences de Java dans le Python = API. Existe-t-il un moyen d'accomplir ce dont j'ai besoin?

52
msridhar

Ok, enfin compris:

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)

Entrées dont le champ source est égal à 'console-api' correspond aux messages de la console et le message lui-même est stocké dans le champ message.

À partir de chromedriver, 75.0.3770.8, vous devez utiliser goog: loggingPrefs au lieu de loggingPrefs:

d['goog:loggingPrefs'] = { 'browser':'ALL' }
83
msridhar

Pour compléter la réponse: à partir de chromedriver 75.0.3770.8, vous devez utiliser goog:loggingPrefs au lieu de loggingPrefs.

Voir le journal des modifications de Chromedriver: http://chromedriver.chromium.org/downloads ou ce bogue: https://bugs.chromium.org/p/chromedriver/issues/detail?id= 2976

2
Perdu