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

[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…
Publier un site Flask sur…
[Python] Combien de temps met…
[Python] Petites fonctions qui vont…

Catégories

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

Étiquettes

7zip android apache audio calibre cbz class cli comicrack convertion debian dict docker drivers duck typing excel firefox json kobo library linux liste manette markdown mp3 nas notepad++ office php pip protocol pyinquirer python qlik qliksense qlikview realtek selenium synology venv virtualenv web windows wordpress youtube

Tags

7zip android apache audio calibre cbz class cli comicrack convertion debian dict docker drivers duck typing excel firefox json kobo library linux liste manette markdown mp3 nas notepad++ office php pip protocol pyinquirer python qlik qliksense qlikview realtek selenium synology venv virtualenv web windows wordpress youtube
Thème par Colorlib Propulsé par WordPress