es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo evitar la ventana emergente de autenticación utilizando Selenium 4

El sitio web que estoy intentando automatizar tiene diferentes métodos de inicio de sesión, dependiendo de la red en la que me encuentre. Cuando no estoy en la red de la empresa, tiene su formulario de inicio de sesión que es lo suficientemente fácil de automatizar. Sin embargo, cuando estoy en la red de la empresa, tengo que iniciar sesión a través de una ventana emergente de autenticación ADFS (esta aquí).

He intentado pasar el nombre de usuario y la contraseña a la URL, pero esto no funciona. ¿Existe alguna manera de evitar esta ventana emergente de inicio de sesión?

Especificaciones:

  • Selenium 4.0.0
  • Chromedriver 96.0.4664.35
  • Chrome 96.0.4664.110
  • openjdk 16.0.2

EDITAR: En respuesta a algunos de los comentarios, así es como he intentado pasar las credenciales a la URL:

driver.get(https://usuario:contraseña@url)

Desafortunadamente, no puedo compartir la URL debido a problemas de privacidad.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible saltarse esta ventana emergente de autenticación ADFS utilizando Selenium. Una forma de lograr esto es utilizando la herramienta AutoIT.

    AutoIT es una herramienta de scripting que se puede utilizar para automatizar interacciones de la GUI de Windows, como hacer clic en botones, pulsaciones de teclas y movimientos del mouse. Puede interactuar con elementos que no sean web, como cuadros de diálogo y mensajes de Windows, lo que lo hace útil en este escenario.

    Para saltarse la ventana emergente de autenticación ADFS utilizando AutoIT, primero deberá escribir un script que maneje la interacción con la ventana emergente. Por ejemplo, el script podría automatizar el clic en el botón “Cancelar” si aparece la ventana emergente o automatizar la introducción del nombre de usuario y la contraseña si es necesario.

    Una vez que el script de AutoIT esté completo, puede integrarlo en su script de prueba de Selenium utilizando el método Runtime.getRuntime().exec(). Este método le permite ejecutar un comando de línea de comandos. En este caso, el comando sería ejecutar el script de AutoIT que creó.

    Algunos ejemplos de código para lograr esto podrían verse así:

    // Lanza el sitio web
    driver.get("https://example.com");
    
    // Comprueba si aparece la ventana emergente de autenticación ADFS
    if (driver.getWindowHandles().size() > 1) {
      // Si aparece la ventana emergente, ejecuta el script de AutoIT para manejarla
      String autoitPath = "C:/ruta/a/autoit.exe";
      String scriptPath = "C:/ruta/a/script-de-ventana-emergente.au3";
      String[] cmd = {autoitPath, scriptPath};
      Runtime.getRuntime().exec(cmd);
    }
    
    // Continúa con el resto de tu prueba
    

    Ten en cuenta que necesitarás descargar e instalar AutoIT por separado, y también crear el script de AutoIT para manejar la ventana emergente de autenticación ADFS. Los detalles exactos del script de AutoIT dependerán de los detalles específicos de la ventana emergente y de cómo deseas manejarla.

Comments are closed.