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
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.
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 ...
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;
}
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 ".
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/