Fermer

février 2, 2024

Test des requêtes réseau ayant échoué avec les commandes Selenium CDP / Blogs / Perficient

Test des requêtes réseau ayant échoué avec les commandes Selenium CDP / Blogs / Perficient


Dans notre exploration de l’intégration de Selenium Chrome DevTools, nous avons abordé la simulation de la navigation mobile, l’exploitation d’informations en temps réel avec les écouteurs Selenium CDP et la maîtrise de l’art d’intercepter et de se moquer des réponses réseau/API. Notre parcours avance désormais dans le domaine de l’optimisation des scénarios de test en traitant les requêtes réseau ayant échoué. Dans cet article, nous allons parcourir un guide complet sur les tests et la gestion des requêtes réseau ayant échoué à l’aide des commandes Selenium CDP.

Pour retrouver nos blogs précédents :

Simulation de navigation mobile : https://blogs.perficient.com/2024/01/22/optimizing-web-testing-mastering-mobile-simulation-with-selenium-cdp-device-metrics-override/

Écouteurs Selenium CDP : https://blogs.perficient.com/2024/01/24/decoding-web-interactions-unleashing-selenium-cdp-listeners-to-extract-network-responses/

Interception et moquerie des réponses réseau/API : https://blogs.perficient.com/2024/01/30/intercepting-and-mocking-network-responses-with-selenium-chrome-devtools/

Détection et réponse aux requêtes réseau ayant échoué

Dans le paysage dynamique des tests Web, la gestion des requêtes réseau ayant échoué est cruciale pour des scénarios de test robustes. Les demandes ayant échoué peuvent entraîner un comportement inattendu des applications, et il est primordial d’identifier et de répondre à ces problèmes. Les commandes Selenium et Chrome DevTools Protocol (CDP) offrent une solution puissante pour relever ce défi.

Comment tester et gérer les requêtes réseau ayant échoué

Examinons un guide étape par étape sur la façon de tester et de gérer les requêtes réseau ayant échoué à l’aide des commandes Selenium CDP :

Échec de la demande de réseau

De la même manière que nous avons simulé une requête réseau, nous pouvons faire échouer une requête réseau intentionnellement pour effectuer le test sur la requête réseau ayant échoué, par exemple pour vérifier si un message d’erreur apparaît lorsque l’erreur se produit. Comprenons-le avec un scénario simple. Nous avons un exemple de site Web https://rahulshettyacademy.com/angularAppdemo, avec un lien « Bibliothèque virtuelle » qui permet d’accéder à la page Bibliothèque qui affiche la liste des livres. Nous mettrons en pause et échouerons la demande pour l’URL de la demande : « https://rahulshettyacademy.com/Library/GetBook.php?AuthorName =shetty », qui est chargé d’afficher les enregistrements du livre sur la page Bibliothèque. Lorsque nous échouons à une demande particulière donnée, aucun enregistrement ne doit être affiché.

Guide étape par étape pour la demande de réseau en cas d’échec

Vous trouverez ci-dessous le code étape par étape avec une explication de l’action :

public class FailedRequest {

    public static void main(String[] args) throws InterruptedException {

        //initialize driver
        WebDriverManager.chromedriver().setup();
        ChromeDriver driver  = new ChromeDriver();
        
        //create devTools session
        DevTools devTools = driver.getDevTools();
        
        devTools.createSession();
        
        //Create Request Pattern Object to define the particular URL we want to target, as we don't want to apply failRequest method on all netowrk calls
        //we will pass only the first argument i.e. urlType for the Request Pattern class object.  
        Optional<List<RequestPattern>> pattern= Optional.of(Arrays.asList(new RequestPattern(Optional.of("*GetBook*"),Optional.empty(),Optional.empty())));
        
        //enable fetch method with pattern object argument to target the specific URL call
        devTools.send(Fetch.enable(pattern, Optional.empty()));
        
        //Pause the request and then fail the request for given url using the failRequest method
        devTools.addListener(Fetch.requestPaused(),request -> {
            
            //failrequest method accepts argument: requestID and ErrorReason (Allowed Values: Failed, Aborted, TimedOut, AccessDenied, ConnectionClosed, ConnectionReset, ConnectionRefused, ConnectionAborted, ConnectionFailed, NameNotResolved, InternetDisconnected, AddressUnreachable, BlockedByClient, BlockedByResponse)
                devTools.send(Fetch.failRequest(request.getRequestId(), ErrorReason.FAILED)); 
            });
        
        //perform the test
        driver.get("https://rahulshettyacademy.com/angularAppdemo/");
        driver.findElement(By.cssSelector("button[routerlink*='library']")).click();
        Thread.sleep(5000);
        
        //You can observe that no records are shown on the Library Page as we have failed the request 
        //Note the sample website we are using is not designed to show error message on request failure, hence we are not validating it, but in realtime applications we can validate the error message that shows after request failure
        
        //close the driver
        driver.quit();

    }

}

Par conséquent, en suivant le processus ci-dessus, nous pouvons faire échouer une demande et tester l’échec de la demande.

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 test et la gestion des requêtes réseau ayant échoué avec les commandes Selenium CDP offrent une approche proactive pour garantir la robustesse des applications Web. En tirant parti des capacités du protocole Chrome DevTools, les testeurs peuvent détecter et répondre aux demandes ayant échoué en temps réel, améliorant ainsi la fiabilité et l’efficacité de leurs scénarios de test. Restez à l’écoute pour plus d’informations alors que notre série d’intégration Selenium Chrome DevTools continue d’explorer les techniques avancées de test Web. Bons tests !






Source link