firefox-console-extract
Récupérer les messages de la console JavaScript de Firefox avec Selenium
Script Pythonmars 2025PythonSeleniumFirefoxgeckodriver
Preuve de concept en Python : Selenium pilote Firefox, configuré pour recopier sa console JavaScript sur la sortie de geckodriver. Le script lit ce flux entre deux marqueurs et renvoie les messages d’une page classés par niveau (debug, log, info, warn, error).
But du projet
Obtenir depuis Python, de façon exploitable, les messages qu’une page web écrit dans la console JavaScript de Firefox. Le dépôt tient en un seul fichier, poc_logs_extraction.py.
Fonctionnement
- La préférence
devtools.console.stdout.contentfait écrire à Firefox les messages de console sur sa sortie standard. - Le service geckodriver est lancé avec
log_output=subprocess.PIPE, ce qui rend ce flux lisible depuis le script. - Des marqueurs
~~STARTOFCONSOLEREADING~~et~~ENDOFCONSOLEREADING~~, émis avecexecute_script, délimitent la portion utile et écartent le bruit de démarrage. - Chaque ligne
console.<niveau>:est découpée en niveau et message, filtrée, et éventuellement affichée en couleur dans le terminal.
Utilisation
Prérequis : Python 3, Firefox, geckodriver et Selenium 4 (pip install selenium). Le script lancé directement émet quelques messages de test puis charge une page de démonstration :
python3 poc_logs_extraction.pyDepuis un autre script :
from poc_logs_extraction import extract_messages_from_url
messages = extract_messages_from_url(
"https://example.org",
wait_load=3,
verbose=False,
output_filter=["warn", "error"],
)
# {'warn': [...], 'error': [...]}La fonction ferme le navigateur à la fin de la lecture.
Limites connues
- Preuve de concept : l’attente du chargement est une pause fixe (
wait_load). - En mode verbeux, un message
console.logprovoque une erreur, faute de couleur définie pour ce niveau : utiliserverbose=Falseou retirerlogdu filtre. - Le mode sans fenêtre est demandé via l’attribut
headlessdes options, retiré des versions récentes de Selenium : Firefox peut alors s’ouvrir avec une fenêtre visible.