Cómo obtener el código de respuesta HTTP usando Selenium WebDriver

Resuelto Ralph asked hace 13 años • 10 respuestas

He escrito pruebas con Selenium2/WebDriver y quiero probar si la solicitud HTTP devuelve un HTTP 403 prohibido.

¿Es posible obtener el código de estado de respuesta HTTP con Selenium WebDriver?

Ralph avatar Jun 28 '11 23:06 Ralph
Aceptado

En una palabra, no. No es posible utilizar la API Selenium WebDriver. Esto se ha discutido hasta la saciedad en el rastreador de problemas del proyecto y la función no se agregará a la API.

JimEvans avatar Jun 28 '2011 20:06 JimEvans

Para aquellas personas que usan Python, podrían considerar Selenium Wire , una biblioteca para inspeccionar las solicitudes realizadas por el navegador durante una prueba.

Obtienes acceso a las solicitudes a través del driver.requestsatributo:

from seleniumwire import webdriver  # Import from seleniumwire

# Create a new instance of the Firefox driver
driver = webdriver.Firefox()

# Go to the Google home page
driver.get('https://www.google.com')

# Access requests via the `requests` attribute
for request in driver.requests:
    if request.response:
        print(
            request.url,
            request.response.status_code,
            request.response.headers['Content-Type']
        )

Huellas dactilares:

https://www.google.com/ 200 text/html; charset=UTF-8
https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png 200 image/png
https://consent.google.com/status?continue=https://www.google.com&pc=s&timestamp=1531511954&gl=GB 204 text/html; charset=utf-8
https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png 200 image/png
https://ssl.gstatic.com/gb/images/i2_2ec824b0.png 200 image/png
https://www.google.com/gen_204?s=webaft&t=aft&atyp=csi&ei=kgRJW7DBONKTlwTK77wQ&rt=wsrt.366,aft.58,prt.58 204 text/html; charset=UTF-8
...

La biblioteca le brinda la posibilidad de acceder a encabezados, códigos de estado, contenido del cuerpo, así como la posibilidad de modificar encabezados y reescribir URL.

Will Keeling avatar Aug 19 '2018 15:08 Will Keeling

Puede utilizar el proxy BrowserMob para capturar las solicitudes y respuestas con un archivo HttpRequestInterceptor. Aquí hay un ejemplo en Java:

// Start the BrowserMob proxy
ProxyServer server = new ProxyServer(9978);
server.start();

server.addResponseInterceptor(new HttpResponseInterceptor()
{
    @Override
    public void process(HttpResponse response, HttpContext context)
        throws HttpException, IOException
    {
        System.out.println(response.getStatusLine());
    }
});

// Get selenium proxy
Proxy proxy = server.seleniumProxy();

// Configure desired capability for using proxy server with WebDriver
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);

// Set up driver
WebDriver driver = new FirefoxDriver(capabilities);

driver.get("http://stackoverflow.com/questions/6509628/webdriver-get-http-response-code");

// Close the browser
driver.quit();
Christian avatar Sep 30 '2013 09:09 Christian