Fermer

février 7, 2024

Bloquer les requêtes réseau indésirables avec Selenium CDP / Blogs / Perficient

Bloquer les requêtes réseau indésirables avec Selenium CDP / Blogs / Perficient


Au cours de notre parcours continu à travers l’intégration de Selenium Chrome DevTools, nous avons exploré la simulation de navigation mobile, les informations en temps réel avec les écouteurs Selenium CDP, l’interception et la moquerie des réponses réseau/API et le test des requêtes réseau ayant échoué. Notre exploration se concentre maintenant sur l’amélioration de l’efficacité des tests en répondant aux requêtes réseau indésirables. Ce blog vous guidera tout au long du processus d’appels réseau nécessaires, garantissant ainsi des tests Web ciblés et efficaces.

Retrouvez nos blogs précédents :

  1. Simuler la navigation mobile
  2. Écouteurs Selenium CDP
  3. Interception et moquerie des réponses réseau/API
  4. Détection et réponse aux requêtes réseau ayant échoué

Bloquer les requêtes réseau indésirables

Des tests Web efficaces nécessitent un environnement ciblé, et les requêtes réseau inutiles peuvent introduire du bruit et affecter la fiabilité des tests. Selenium et Chrome DevTools Protocol (CDP) peuvent bloquer les appels réseau indésirables, optimisant ainsi les scénarios de test.

Bloquer les requêtes réseau

Prenons un scénario dans lequel nous souhaitons simplement nous concentrer sur les fonctionnalités d’une application. Supposons que nous ayons un exemple de site Web de page de commerce électronique « https://EcomDemoApp.com », nous souhaitons simplement nous concentrer sur les fonctionnalités de base comme accéder à la page du produit > sélectionner un produit > ajouter au panier > vérifier un message « CE PRODUIT EST DÉJÀ AJOUTÉ AU PANIER ». Si nous suivons le flux habituel, chaque fois qu’une page se charge, les images et les composants CSS des pages se chargent également, ce qui prend du temps et ralentit l’exécution. Mais si nous voulons simplement valider la logique fonctionnelle, nous n’avons pas besoin du chargement des images et du CSS. Nous pouvons donc bloquer le chargement en bloquant la requête réseau qui en est responsable, ce qui rend l’exécution extrêmement rapide.

Note: Par exemple, nous bloquons les images et les composants CSS, mais selon nos exigences, nous pouvons bloquer toute requête réseau indésirable qui semble insignifiante et provoque tout type de problème lors des tests.

Guide étape par étape pour bloquer les requêtes réseau

Passons à un guide étape par étape sur la façon de bloquer les requêtes réseau indésirables qui bloqueront le chargement des images et des composants CSS. Vous trouverez ci-dessous le code étape par étape avec une explication de l’action :

public class NetworkBlocking {

    public static void main(String[] args) throws InterruptedException {
        
        //initialize driver
        WebDriverManager.chromedriver().setup();
        ChromeDriver driver  = new ChromeDriver();
        
        //Create and start DevTool session
        DevTools devTools = driver.getDevTools();
        devTools.createSession();
        
        //send command 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()));
        
        // Block network request by passing list of request URLs as argument in Network.setBlockedURLs() method
        // We have used regular expression instead if complete URLs, as we know the request URL for the desired network requests ends with .css and .jpg
        devTools.send(Network.setBlockedURLs(ImmutableList.of("*.jpg","*.css")));
        
        
        //perform the test

//open application
        driver.get("https://EcomDemoApp.com");
//click link navigating to product page > select product > add to cart > get the text
        driver.findElement(By.linkText("Browse Products")).click();
        driver.findElement(By.linkText("Selenium")).click();
        driver.findElement(By.cssSelector(".add-to-cart")).click();
        System.out.println(driver.findElement(By.cssSelector("p")).getText());
        Thread.sleep(3000);
        
        //quit
        driver.quit();
        
                
    }

}

Explication:

  1. Initialiser le pilote :
    • Cette ligne initialise WebDriver pour Chrome à l’aide de WebDriverManager et configure le pilote.
  2. Créer et démarrer une session DevTool :
    • Nous créons une instance DevTools et démarrons une session, nous permettant d’interagir avec Chrome DevTools par programme.
  3. Activer le domaine réseau :
    • Nous envoyons une commande pour activer le domaine réseau dans Chrome DevTools, permettant l’interception et la manipulation des requêtes réseau.
  4. Bloquer les requêtes réseau :
    • Nous bloquons les requêtes réseau spécifiques en transmettant une liste d’URL de requête au Network.setBlockedURLs() méthode. Les expressions régulières (*.jpg, *.css) sont utilisées pour correspondre aux URL des requêtes que nous souhaitons bloquer.
  5. Effectuer un test :
    • Nous accédons à une page Web, effectuons des actions telles que cliquer sur des liens et des boutons, et imprimons du texte à partir de la page.
  6. Quitter le pilote :
    • Enfin, nous quittons l’instance WebDriver en fermant la fenêtre du navigateur.

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

Le blocage des requêtes réseau indésirables avec les commandes Selenium CDP augmente l’efficacité des tests en créant un environnement de test ciblé. Cette stratégie garantit que vos tests restent exempts d’interférences, fournissant des résultats fiables et précis et accélérant l’exécution. Restez à l’écoute pour plus d’informations dans notre série d’intégration Selenium Chrome DevTools alors que nous continuons à explorer les techniques avancées de test Web. Bons tests !






Source link