Estoy tratando de escribir un script para acceder a un controlador de LAN inalámbrica de Cisco. Estoy usando Selenium y Chrome, y estoy atascado en la página de inicio de sesión. Por lo que puedo decir, al hacer clic en el botón 'iniciar sesión' en la pantalla de inicio de Cisco se activa un javascript llamado loginAction () para solicitar al usuario un nombre de usuario y contraseña.

El problema que tengo es que el cuadro de inicio de sesión emergente no tiene elementos identificables. Cuando se muestra el cuadro de inicio de sesión, el cursor ya está activo en el campo de nombre de usuario. Parece que podría usar la función sendKeys para simplemente ingresar un nombre de usuario en el cuadro de texto actualmente activo, pero no funciona. Como no conozco la identificación de los cuadros de texto, no puedo usar algo como driver.findElement (By.id ("authlogin")). SendKeys ("username");

Al mirar otras publicaciones del foro, he visto dónde una solución común es incrustar el nombre de usuario y la contraseña en la URL cuando se carga el navegador, como driver.get ('https: // nombre de usuario: contraseña@ejemplourl.com '). Tampoco estoy teniendo suerte con esto; simplemente abre la misma pantalla de inicio y solicita credenciales, al igual que si hubiera hecho clic manualmente en el botón 'iniciar sesión' en la pantalla de inicio.

¿Alguien tiene alguna idea sobre esto? Parece que sería bastante sencillo ya que el cursor ya está activo en el cuadro de texto del nombre de usuario. ¡Gracias por cualquier ayuda y consejo!

Screenshot

0
drummingrocks 30 oct. 2017 a las 01:16

3 respuestas

La mejor respuesta

Yo también enfrenté un problema similar al iniciar sesión en la aplicación. Dado que la ventana emergente de autenticación de Windows abierta para iniciar sesión no está basada en el navegador, el selenio no puede interactuar directamente con ella. Para interactuar con ventanas emergentes basadas en Windows, debe usar una herramienta de terceros como AutoIT. Después de hacer la configuración para AutoIT, solo tiene que agregar una línea de código como se muestra a continuación después de su url

driver.get("http://your.url");
Runtime.getRuntime().exec("D:\\AutoIt\\AutoItTest.exe");//path where you kept exe file 

Para obtener más información sobre cómo funciona en AutoIT, consulte el segundo enfoque aquí o vaya a este artículo

0
Shoaib Akhtar 30 oct. 2017 a las 06:07

Terminé usando AutoIT y escribiendo un script simple para que maneje la ventana de inicio de sesión. Esto fue lo que usé:

Send("{TAB}{ENTER}")
Sleep(2000)
Send("user{TAB}password{ENTER}")

Llamé al script AutoIT dentro de Selenium con esta función Javascript:

function autoIT() {
    var child_process = require('child_process');
    var workerProcess = child_process.execFile("C:\\Selenium\\autoitscript.exe");
    sleep(4500).then(() => {
siteNavigate();
});

Una vez que se ejecuta el script AutoIT, puede volver a usar Selenium.

0
drummingrocks 1 nov. 2017 a las 12:56

También puede insertar directamente el nombre de usuario y la contraseña en la URL.

Ejemplo: http: // username: password@yourUrl.com

Entonces, en el código, puede decir (en c #)

string yourUrl = "http://"+username+":"+password+"@yourUrl.com";
driver.Url = yourUrl;

O java

String yourUrl = "http://"+username+":"+password+"@yourUrl.com";
driver.get(yourUrl);
0
Anand 30 oct. 2017 a las 14:22