Vérification du code d’état HTTP dans Selenium

Comment obtenir le code de statut HTTP dans Selenium?

Par exemple, je peux tester que si le navigateur demande / user / 27 et qu’aucun utilisateur avec ID = 27 n’existe, un HTTP 404 est renvoyé?

Mon principal intérêt est Selenium RC, mais si quelqu’un connaît la réponse au selenium “normal”, je peux probablement le traduire facilement en RC.

/ Pete

    Cela pourrait ne pas être la meilleure utilisation du selenium pour ce type de test. Il est inutile de charger un navigateur lorsque vous pouvez le faire et d’effectuer un test plus rapide

    [Test] [ExpectedException(typeof(WebException), UserMessage = "The remote server returned an error: (404) Not Found")] public void ShouldThrowA404() { HttpWebRequest task; //For Calling the page HttpWebResponse taskresponse = null; //Response returned task = (HttpWebRequest)WebRequest.Create("http://foo.bar/thiswontexistevenifiwishedonedayitwould.html"); taskresponse = (HttpWebResponse)task.GetResponse(); } 

    Si votre test est redirigé vers une autre page au cours d’une 404, Selenium pourrait vérifier si la page finale correspond à vos attentes.

    Je sais que c’est un piratage choquant, mais c’est ce que j’ai fait:

      protected void AssertNotYellowScreen() { var selenium = Selenium; if (selenium.GetBodyText().Contains("Server Error in '/' Application.")) { ssortingng errorTitle = selenium.GetTitle(); Assert.Fail("Yellow Screen of Death: {0}", errorTitle); } } 

    Cela fait le travail dans la situation où j’en avais besoin, même si j’accepte que ce n’est pas idéal …

    Comme Selenium 2 inclut HtmlUnit, vous pouvez l’utiliser pour accéder directement à la réponse.

     public static int getStatusCode(long appUserId) throws IOException { WebClient webClient = new WebClient(); int code = webClient.getPage( "http://your.url/123/" ).getWebResponse().getStatusCode(); webClient.closeAllWindows(); return code; } 

    Vous voulez probablement vérifier l’appel captureNetworkTraffic (). En ce moment, il ne fonctionne que de manière fiable avec Firefox, sauf si vous configurez manuellement IE / Safari / etc pour le trafic proxy via le port 4444.

    Pour l’utiliser, il suffit d’appeler selenium.start (“captureNetworkTraffic = true”), et plus tard dans votre script, vous pouvez appeler selenium.captureNetworkTraffic (“…”) où “…” est “plain”, “xml “ou” json “.

    Je ne l’ai pas essayé, mais si cela ne vous dérange pas de vous limiter à Firefox et d’installer Firebug et Netexport, Selenium peut accéder au code d’état de la page (et à tout le rest du panneau Net de Firebug): http: // selenium .polteq.com / fr / en utilisant-netexport-to-export-firebugs-net-panel /

    Essayez ceci, les gens

     WebClient wc = new WebClient(); int countRepeats = 120; // one wait = 0.5 sec, total 1 minute after this code boolean haveResult = false; try { HtmlPage pageHndl = wc.getPage(Urls); for(int iter=0; iter 

    Si tout le rest échoue, vous pouvez adapter le code côté serveur, pendant le test, pour afficher l’état HTTP dans la page en tant qu’élément:

    Par exemple, sur ma page 403 Permission Denied, j’ai:

      

    403 Access Denied

    qui peut être facilement vérifié via l’API WebDriver:

      public boolean is403(WebDriver driver) { try { driver.findElement(By.id("web_403")); return true; } catch (NoSuchElementException e) { return false; } } 

    http://www.ninthavenue.com.au/how-to-get-the-http-status-code-in-selenium-webdriver