Fermer

janvier 24, 2024

Libérer les auditeurs Selenium CDP pour extraire les réponses du réseau / Blogs / Perficient

Libérer les auditeurs Selenium CDP pour extraire les réponses du réseau / Blogs / Perficient


Introduction

Dans le domaine dynamique de l’intégration de Selenium CDP, où Selenium exploite la puissance du protocole Chrome DevTools (CDP). Nous avons déjà entrepris un voyage pour simuler la navigation mobile à l’aide de Device Metrics Override : Optimisation des tests Web : maîtriser la simulation mobile avec le remplacement des métriques des appareils Selenium CDP / Blogs / Perficient

S’appuyant sur cette base, notre exploration approfondit désormais les interactions Web complexes en mettant l’accent sur les auditeurs Selenium CDP. Dans cet article sur l’extraction de réponses réseau avec l’intégration de Selenium CDP, nous approfondirons l’exploitation des réponses réseau et des données de requête, nous permettant d’extraire des valeurs telles que le code d’état, l’URL, l’identifiant de demande, etc.

Le rôle crucial des réponses du réseau :

Dans les tests Web, comprendre les réponses réseau d’une page est primordiale. Les réponses du réseau, souvent représentées par des codes d’état HTTP, fournissent des informations sur le succès ou l’échec des requêtes émises par une page Web. Ces réponses, encapsulant une multitude de données au-delà des codes d’état, fournissent des informations sur le chargement des ressources, les appels d’API et l’exécution de scripts sur une page Web.

Auditeurs Selenium CDP : dévoilement d’informations en temps réel

Selenium, en collaboration avec CDP Listeners, permet aux testeurs d’exploiter cette richesse d’informations. Les auditeurs, comme leur nom l’indique, « écoutent » les événements dans le navigateur Chrome et nous permettent de capturer et d’analyser les réponses du réseau en temps réel. Cette fonctionnalité change la donne, offrant une approche dynamique des tests et du débogage.

Extraction de données réseau complètes avec Selenium CDP

Examinons une démonstration pratique de la façon dont les écouteurs Selenium CDP peuvent être utilisés pour extraire une pléthore de données à partir des réponses du réseau lors d’un scénario de test. Prenons une situation courante dans laquelle une page Web effectue plusieurs requêtes réseau pour des ressources. En configurant des auditeurs, nous pouvons intercepter et extraire une gamme d’informations précieuses.

public class NetworkActivity {

    public static void main(String[] args) {
        
        WebDriverManager.chromedriver().setup();
        ChromeDriver driver  = new ChromeDriver();
        
        //create session
        DevTools devTools = driver.getDevTools();
        
        devTools.createSession();
        
        //send cmd to CDP methods> cdp method will invoke and get access to chrome devtools
        
        //enable network
        devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
        
        
        //event fires > listeners will capture the event
        
        //request event 
        devTools.addListener(Network.requestWillBeSent(), request->{
            
            Request req = request.getRequest();
            System.out.println(req.getUrl());
            System.out.println(req.getHeaders());
            
        });
        
        //response event
        devTools.addListener(Network.responseReceived(), response ->{
            
            org.openqa.selenium.devtools.v120.network.model.Response resp = response.getResponse();
            System.out.println(resp.getUrl());
            System.out.println(resp.getStatus());
            System.out.println(response.getRequestId());
             
            
        });
        
        //perform test
        driver.get("https://rahulshettyacademy.com/angularAppdemo");
        
        driver.findElement(By.linkText("Library")).click();

        driver.quit();
        
    }
}

Dans cet exemple, nous activons le domaine Réseau et écoutons le responseReceived et les événements « requestWillBeSent ». Dès réception de l’événement, nous extrayons le code d’état, l’ID de demande, les URL et les données d’en-tête de demande de la réponse. Voici quelques fonctions que nous avons utilisées ci-dessus

  1. ‘Network.enable’ (activation du réseau) : Envoie une commande pour activer le domaine réseau dans Chrome DevTools, permettant l’interception des événements réseau. Il accepte 3 paramètres : maxTotalBufferSize(entier), maxResourceBufferSize(entier) et maxPostDataSize(entier) respectivement.
  2. Écouteur d’événement « Network.requestWillBeSent » : Vous pouvez écouter l’événement déclenché lorsqu’une requête réseau est sur le point d’être envoyée. Capturez et imprimez l’URL et les en-têtes de la requête sortante.
  3. Écouteur d’événement « Network.responseReceived » : Vous pouvez écouter l’événement déclenché lorsqu’une réponse réseau est reçue. Capturez et imprimez l’URL, le statut et l’ID de demande associés à la réponse.

Nous pouvons personnaliser davantage nos actions en fonction du code.

Applications du monde réel

Comprendre les codes d’état du réseau en temps réel est inestimable pour des tests complets. Cela nous permet d’identifier les goulots d’étranglement potentiels, d’optimiser le chargement des ressources et de garantir que l’application Web se comporte comme prévu dans différentes conditions de réseau.

Vous pouvez vous référer à la documentation officielle pour plus de détails sur les différentes méthodes et événements : Protocole Chrome DevTools

Conclusion

Alors que nous concluons cette exploration de l’exploitation des réponses réseau avec les auditeurs Selenium CDP, nous ouvrons une nouvelle dimension d’informations sur les tests Web. La capacité d’extraire et d’analyser une gamme diversifiée de points de données à partir des réponses du réseau améliore la précision et l’efficacité de nos stratégies de test. Restez à l’écoute pour plus de révélations sur l’intégration de Selenium CDP alors que nous continuons à décoder les subtilités des interactions Web. Bons tests !






Source link