web-dev-qa-db-fra.com

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

Comment obtenir le code de statut HTTP dans Selenium?

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

Mon intérêt principal est Selenium RC, mais si quelqu'un connaît la réponse au sélénium "normal", je peux probablement le traduire facilement en RC.

/ Pete

40
Pete

Ce n'est peut-être pas la meilleure utilisation de Selenium pour ce type de test. Il est inutile de charger un navigateur lorsque vous pouvez effectuer et exécuter un test plus rapidement.

[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 pendant un 404, Selenium peut vérifier que la dernière page a ce que vous attendez.

10
AutomatedTester

Je sais que c'est un hack choquant, mais voici ce que j'ai fait:

    protected void AssertNotYellowScreen()
    {
        var Selenium = Selenium;

        if (Selenium.GetBodyText().Contains("Server Error in '/' Application."))
        {
            string errorTitle = Selenium.GetTitle();

            Assert.Fail("Yellow Screen of Death: {0}", errorTitle);
        }
    }

Le travail est fait dans la situation pour laquelle j'en avais besoin, bien que j'accepte que ce ne soit pas idéal ...

6
William Burgeson

Puisque 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;
}
5
Sotomajor

Vous voudrez probablement vérifier l'appel captureNetworkTraffic (). Pour le moment, cela ne fonctionne de manière fiable qu'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"), puis plus tard dans votre script, vous pouvez appeler Selenium.captureNetworkTraffic ("...") où "..." est "plain", "xml ", ou" json ".

1

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 reste dans le panneau Net de Firebug): http://Selenium.polteq.com/fr/using-netexport-to-export-firebugs-net-panel/

0
Matthew Lock