Aller au contenu
Cheat Sheet
Python

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

  • 5 avril 20215 avril 2021

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] 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…
[Notepad++] Enchaîner les “rechercher /…
[Python] Transformer un tableau de…

Catégories

  • Android
  • Calibre
  • 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

android apache bloc bootloader connexion delay drivers excel fastboot firefox flask gps kobo lineageos linux manette markdown max min mod_wsgi motorola mp3 notepad++ php pip python qlik qliksense qlikview reduce selenium sound sum synology temps twrp venv virtualenv visual basic vitesse waze windows wordpress xhr youtube

Tags

android apache bloc bootloader connexion delay drivers excel fastboot firefox flask gps kobo lineageos linux manette markdown max min mod_wsgi motorola mp3 notepad++ php pip python qlik qliksense qlikview reduce selenium sound sum synology temps twrp venv virtualenv visual basic vitesse waze windows wordpress xhr youtube
Thème par Colorlib Propulsé par WordPress