Cómo obtener el código de respuesta HTTP usando Selenium WebDriver
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?
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.
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.requests
atributo:
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×tamp=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.
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();