Saltar al contenido

Cómo manejar la ventana emergente de autenticación en Chrome con Selenium WebDriver usando Java

Esta es la solución más exacta que encomtrarás aportar, pero primero mírala detenidamente y valora si se adapta a tu proyecto.

Solución:

Puede ser útil para que otros resuelvan este problema en Chrome con la ayuda de la extensión de Chrome. Gracias a @SubjectiveReality que me dio esta idea.

Enviar nombre de usuario y contraseña como parte de la URL como https://nombre de usuario:[email protected] puede ser útil si el mismo servidor realiza la autenticación y aloja la aplicación. Sin embargo, la mayoría de las aplicaciones corporativas tienen autenticaciones en toda la empresa y el servidor de aplicaciones puede redirigir la solicitud a los servidores de autenticación. En tales casos, pasar las credenciales en la URL no funcionará.

Aquí está la solución:

Paso 1: Crea una extensión de Chrome

  1. Crea una carpeta llamada ‘extensión’
  2. Cree un archivo llamado ‘manifest.json’ dentro de la carpeta ‘extension’. Copie el siguiente código en el archivo y guárdelo.

“name”:”Webrequest API”, “version”:”1.0″, “description”:”Extensión para manejar la ventana de autenticación”, “permisos”:[“”,”webRequest”,”webRequestBlocking”]”fondo”: “guiones” : [“webrequest.js”]
, “manifest_version”: 2

  1. Cree un archivo llamado ‘webrequest.js’ dentro de la carpeta ‘extension’ y copie y pegue el siguiente código en el archivo y guárdelo.
chrome.webRequest.onAuthRequired.addListener(
function handler(details)
 return 'authCredentials': username: "yourusername", password: "yourpassword";
,
urls:[""],
['blocking']);
  1. Abra el navegador Chrome, vaya a chrome://extensions y active el modo desarrollador

  2. Haga clic en ‘Extensión del paquete’, seleccione el directorio raíz como ‘extensión’ y empaque la extensión. Debería crear un archivo con extensión ‘.crx’

Paso 2: agregue una extensión a su marco de automatización de pruebas

  1. Copie el archivo .crx en su marco
  2. Configure su creación de controlador web para cargar la extensión como
options.addExtensions(new File("path/to/extension.crx"));
options.addArguments("--no-sandbox");
  1. Invoque su controlador web y la URL de la aplicación
  2. Nunca verá aparecer la ventana emergente de autenticación, ya que la maneja la extensión anterior

¡Feliz prueba!

Referencias:

http://www.adambarth.com/experimental/crx/docs/webRequest.html#apiReference https://developer.chrome.com/extensions/webRequest#event-onAuthRequired chrome.webRequest.onAuthRequired Listener https://gist. github.com/florentbr/25246cd9337cebc07e2bbb0b9bf0de46

*editar Chrome ya no es compatible con esto.

¿No es una ventana emergente “restringida” que se puede manejar anteponiendo a la dirección el nombre de usuario y la contraseña?

En lugar de driver.get("http://www.example.com/"); ir por driver.get("http://username:[email protected]");.

Respuesta actualizada de la solución proporcionada por @Bhuvanesh Mani

manifiesto.json


    
        "name": "Webrequest API",
        "version": "1.0",
        "description": "Extension to handle Authentication window",
        "permissions": [
            "webRequest",
            "webRequestBlocking",
            ""
        ],
        "background": 
            "scripts": [
                "webrequest.js"
            ]
        ,
        "manifest_version": 2
    

webrequest.js


    chrome.webRequest.onAuthRequired.addListener(function(details)
        console.log("chrome.webRequest.onAuthRequired event has fired");
        return 
                authCredentials: username: "yourusername", password: "yourpassword"
            ;
    ,
    urls:[""],
    ['blocking']);

No estoy seguro de por qué se requiere la opción ‘–no sandbox’, pero para mí esto no es obligatorio.

Necesitaba realizar una edición del registro para permitir agregar extensiones, ya que esto está deshabilitado con una política corporativa de AD:

  • Abra regedit.exe como administrador
  • navegue a ComputadoraHKEY_USERS
  • Cambie el valor REG_SZ que ahora está establecido en * a por ejemplo -.
  • reinicie la instancia de Chrome en la que desea agregar extensiones.

La única diferencia con la respuesta original son las URL que también deben estar presentes en los permisos.

extras

si desea ver la salida de la consola, active el modo de desarrollador y haga clic en el Inspect views background page para su extensión en la pantalla de extensiones en Chrome

Si posees alguna vacilación o capacidad de ascender nuestro escrito te evocamos realizar una anotación y con mucho placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *