selenium-webdriver httpresponse selenium-grid

Verificando HttpResponse OK(200) con Selenium WebDriver



selenium-webdriver selenium-grid (5)

Esta pregunta ya tiene una respuesta aquí:

Estoy usando Selenium Remote WebDriver. Leí todos los enlaces del archivo csv y ejecuto la prueba en esos enlaces. Pero a veces me sale la respuesta 404.

¿Hay alguna manera en Selenium WebDriver para verificar que obtengamos la respuesta HTTP 200?


Antes de usar selenio, podrías usar algo como:

public static boolean linkExists(String URLName){ try { HttpURLConnection.setFollowRedirects(false); HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection(); con.setRequestMethod("HEAD"); return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } }

Usándolo de esta manera:

WebDriver driver = new FirefoxDriver(); for(String url : csvArray){ if(linkExists(url)){ driver.get(url); . . . } }


Es una forma de eso (creo: P).
Puede utilizar JavaScript para comprobar el estado de http en la página. Se puede llamar a JS en Java de la siguiente manera:
((JavascriptExecutor) webDriver) .executeScript (js);

La mejor opción es crear una página web ficticia en el disco duro del nodo con la función JS y llamar a esa función en executeScript () en esa página.
También puedes intentar enviar todo el código JS en executeScript (), pero no estoy seguro de que funcione.


No hay forma de obtener códigos de estado HTTP directamente en la API de WebDriver. Ha sido una solicitud de características de larga data , que probablemente nunca se implementará en el proyecto. La solución correcta para su problema es configurar su navegador para usar un proxy que pueda interceptar y registrar el tráfico de la red, y hacer que su código consulte ese proxy para el resultado que está buscando.

Por supuesto, si todo lo que le interesa es revisar un enlace para asegurarse de que devuelve un código de estado 200, puede usar fácilmente una biblioteca de cliente HTTP en el idioma que desee para navegar al enlace. No hay necesidad de usar WebDriver a menos que necesite manipular la página resultante de alguna manera.


Nuestro sitio tiene una página de error personalizada para 404 respuestas. El título de la página en esa página dice "404 - Página no encontrada". Uso driver.Title y compruebo el texto "no encontrado".

Usando C #, escribí lo siguiente:

// Check for 404 page: var pageNotFoundTitleText = "not found"; if (driver.Title.ToLower().Contains(pageNotFoundTitleText)) throw new Exception("### 404 - Page Not found: " + link);


Puede hacerlo usando RestAssured import static com.jayway.restassured.RestAssured.given;

int returnCode = given().when().baseUri(url).get().getStatusCode(); if (returnCode == 200) { webDriver.get(url); helper.asserts.assertTrue(helper.finder.isElementPresent(By.className("ticketType"))); } else { helper.asserts.fail("This url "+url+" is returning the following code: " + returnCode); };