error handling - tienes - No se detenga en el error HTTP 403
error 403 youtube (3)
Parece que tengo que responder la pregunta yo mismo ...
Ahora rodeo la llamada "abierta" con un try ... catch block. Allí, analizo el mensaje de excepción si contiene el código 403 y XHR ERROR. Me parece que no está muy limpio, pero funciona.
En uno de mis casos de prueba de Selenium, intento asegurarme de que no se pueda acceder a ciertas páginas. En cambio, se debe dar el código de retorno HTTP 403.
Sin embargo, aquí el Selenium finaliza la ejecución de la prueba con la siguiente excepción:
com.thoughtworks.selenium.SeleniumException: XHR ERROR: URL = http://user:[email protected]/admin Response_Code = 403 Error_Message = Forbidden
¿Alguna forma de evitarlo?
Estaba intentando probar los errores HTTP 403 usando PHPUnit. Examiné el código de Extensión de Selenio de PHPUnit y descubrí que el controlador finaliza la sesión tan pronto como recibe una mala respuesta, y no parece haber una forma de eludir esta funcionalidad.
Terminé usando una solución try-catch y reiniciando la sesión de Selenium:
try {
$this->open(''restricted_url'');
$this->assertTitle(''The page cannot be displayed'');
} catch (PHPUnit_Framework_Exception $e) {
$this->start();
}
Cuando se reinicia la sesión de Selenium, toda la información de la sesión se pierde, como es de esperar, por lo que tendrá que volver a crear la sesión para ejecutar más pruebas:
$this->loginAsGuest();
try {
$this->open(''admin_url'');
$this->assertTitle(''The page cannot be displayed'');
} catch (PHPUnit_Framework_Exception $e) {
$this->start();
$this->loginAsGuest();
}
No sé qué idioma estás usando, pero creo que puedes evitar esto instruyendo a Selenium para que ignore el código de estado al abrir una página.
En Ruby:
@browser.remote_control_command(''open'', [url, ''true''])
Cª#:
((DefaultSelenium)selenium).Processor.DoCommand("open", new string[]{url, "true"}))
Creo que el comportamiento en Selenium trunk es ahora ignorar el código de estado de forma predeterminada. Entonces, podrías intentar construir eso y ver si te funciona.