Aller au contenu
Cheat Sheet
Python

[Python / Selenium] Regarder les requêtes qui passent dans…

Lorsqu’on utilise Selenium, parfois on souhaiterait retrouver les requêtes qui passent dans le réseau (XHR, images, …).

Lorsqu’on utilise le module de développement de Firefox ou Chrome, on a la possibilité de voir toutes les requêtes qui passent dans l’onglet Network.
Si on souhaite avoir des informations sur ce contenu dans Selenium avec Python, on peut faire comme ça :

from time import sleep
from selenium import webdriver
from selenium.webdriver import DesiredCapabilities
import json
import base64

# Requêtes Chrome
capabilities = DesiredCapabilities.CHROME

# capabilities["loggingPrefs"] = {"performance": "ALL"}  # Pour chromedriver < ~75
capabilities["goog:loggingPrefs"] = {"performance": "ALL"}  # Pour chromedriver 75+

driver = webdriver.Chrome(
    desired_capabilities=capabilities, executable_path="chromedriver89.exe" # Mettre ici le bon driver
)

# On va à l'adresse qui nous intéresse.
driver.get("https://www.google.com")
sleep(5)  # On attend que la page ait le temps de se charger.

# On extrait toutes les requêtes.
logs_raw = driver.get_log("performance")
logs = [json.loads(lr["message"])["message"] for lr in logs_raw]

# Filtre à appliquer sur les requêtes.
def log_filter(log):
    return (
        # Il s'agit d'une réponse
        log["method"] == "Network.responseReceived"
        # Il s'agit d'une image
        # and "jpeg" in log["params"]["response"]["mimeType"]
    )

for log in filter(log_filter, logs):
    request_id = log["params"]["requestId"]
    resp_url = log["params"]["response"]["url"]
    mime = log["params"]["response"]["mimeType"]
    print(f"Caught {resp_url}")
    print(f"Mime: {mime}")
    
    # On récupère le contenu.
    content = driver.execute_cdp_cmd("Network.getResponseBody", {"requestId": request_id})
    if content['base64Encoded']:
        content = base64.b64decode(content['body'])
    else:
        content = content['body']
    # print(content)

Le partage de connexion ne fonctionne pas entre mon téléphone Android et mon ordinateur
[Python] Combien de temps met un bloc de code
python selenium xhr

Articles similaires

Pylance / Pyright fait ramer…
Créer une application Android avec…
Accéder à un serveur qui…
[Python] Comment bien démarrer un…
[Python] Extraire une page PDF…
[Python] Protocol
[Python] Liste de choix en…
[Python] Benedict : une autre…
[Python] Exécuter un programme externe…
Un package Python nécessite Visual…

Catégories

  • Android
  • Calibre
  • Docker
  • Excel
  • Git
  • Google Sheet
  • Knime
  • Linux
  • Logiciels
  • Matériel
  • Non classé
  • Notepad++
  • PHP
  • Power BI
  • Programmation
  • Python
  • Qlik
  • Service
  • Synology
  • Visual Studio Code
  • VSCode
  • Windows
  • Word
  • WordPress

Étiquettes

adb android apache audio calibre convertion css debian docker drivers excel fichiers firefox flask google grep html kobo linux manette markdown mp3 notepad++ office php pip portable privoxy python qlik qliksense qlikview realtek selenium synology tor venv vim virtualenv vscode web windows wordpress xargs youtube

Tags

adb android apache audio calibre convertion css debian docker drivers excel fichiers firefox flask google grep html kobo linux manette markdown mp3 notepad++ office php pip portable privoxy python qlik qliksense qlikview realtek selenium synology tor venv vim virtualenv vscode web windows wordpress xargs youtube
Thème par Colorlib Propulsé par WordPress