org openqa mac library español descargar bindings selenium selenium-rc

selenium - openqa - Comprobando el código de estado HTTP en selenio



selenium mac (7)

¿Cómo obtener el código de estado HTTP en Selenium?

Por ejemplo, ¿puedo probar que si el navegador solicita / user / 27 y no hay ningún usuario con ID = 27, se devuelve un HTTP 404?

Mi principal interés es Selenium RC, pero si alguien sabe la respuesta para el selenio "normal", probablemente pueda traducirlo fácilmente a RC.

/ Pete


Dado que Selenium 2 incluye HtmlUnit, puede utilizarlo para acceder directamente a la respuesta.

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; }


Este podría no ser el mejor uso de Selenium para este tipo de prueba. No es necesario cargar un navegador cuando podría hacer y tener una prueba de ejecución más rápida

[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 su prueba está redireccionando a otra página durante un 404 Selenium podría verificar que la página final tenga lo que usted espera.



Probablemente desee verificar la llamada captureNetworkTraffic (). En este momento, solo funciona de manera confiable con Firefox, a menos que configure manualmente IE / Safari / etc para el tráfico proxy a través del puerto 4444.

Para usarlo, simplemente llame a selenium.start ("captureNetworkTraffic = true"), y luego en su script puede llamar a selenium.captureNetworkTraffic ("...") donde "..." es "simple", "xml ", o" json ".


Prueba esto, gente

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<countRepeats; iter++){ int pageCode = pageHndl.getWebResponse().getStatusCode(); System.out.println("Page status "+pageCode); if(pageCode == 200){ haveResult = true; break; } else{ Thread.sleep(500); } } } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } catch (InterruptedException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. }


Sé que esto es un truco impactante, pero esto es lo que hice:

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); } }

Hace el trabajo en la situación en la que lo necesitaba, aunque acepto que no es ideal ...


Si todo lo demás falla, podría adaptar su código del lado del servidor, durante las pruebas, para generar el estado HTTP en la página como un elemento:

Por ejemplo, en mi página 403 Permiso denegado, tengo:

<h1 id="web_403">403 Access Denied</h1>

que se puede verificar fácilmente a través de la API de 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