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.

Iniciar un navegador con un proxy registrado en el framework de Robot.

Estoy enfrentando el siguiente problema: Como estoy conectado a través de VPN, cuando abro un navegador, aparece un mensaje emergente del navegador que me solicita las credenciales de usuario y contraseña:

Necesito abrir un navegador en Robot Framework (ya sea Firefox o Chrome) con un proxy iniciado sesión.

Sé que es posible abrir una instancia de Firefox con un proxy utilizando Create Webdriver de SeleniumLibrary:

${proxy}= Evaluate selenium.webdriver.Proxy() modules=selenium, selenium.webdriver
${proxy.http_proxy}= Set Variable localhost:8888
Create Webdriver Firefox proxy=${proxy}

El problema es que parece que no es posible pasar las credenciales (usuario y contraseña) para el inicio de sesión en el proxy.
Además, como sugiere la mayoría de las personas, sé que es posible abrir el navegador iniciado sesión con el proxy utilizando la URL formateada de la siguiente manera (en el pasado también lo he utilizado en diferentes proyectos):

https://proxy_user:proxy_password@url_to_reach.com

Pero por alguna razón no funciona, todavía tengo el mensaje emergente del navegador que me pide las credenciales.

También he intentado utilizar Input Text Into Alert, pero no completa los campos del mensaje emergente:

Input Text Into Alert text=username action=LEAVE

También he pensado que tal vez sea posible hacerlo utilizando algunas preferencias con Chrome o un perfil con Firefox, pero no he encontrado nada al respecto. ¿Algún otro método utilizando JavaScript?
¿Alguien puede aydar? Muchas gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas con la ventana emergente del navegador que solicita credenciales en Robot Framework

    Si está enfrentando una ventana emergente del navegador que solicita credenciales de usuario y contraseña al abrir un navegador en Robot Framework mientras está conectado a una VPN, puede intentar las siguientes soluciones:

    Solución 1: Pasar credenciales al inicio de sesión del proxy con SeleniumLibrary Create Webdriver

    Aunque parece que no es posible pasar credenciales (usuario y contraseña) para el inicio de sesión del proxy con SeleniumLibrary Create Webdriver, puede intentar establecer las credenciales de autenticación con la capacidad selenium.webdriver.PhantomJS.service_args de la siguiente manera:

    ${proxy}    Evaluar    selenium.webdriver.Proxy()    modules=selenium.webdriver.common.proxy, selenium.webdriver
    ${proxy.http_proxy}    Establecer Variable    localhost:8888
    ${service_args}    Crear Lista
    ${proxy_auth}    Establecer Variable    ${username}:${password}
    Agregar a Lista    ${service_args}    --proxy-auth=${proxy_auth}    --proxy=${proxy.http_proxy}
    Crear Webdriver    Firefox    service_args=${service_args}
    

    Solución 2: Acceder a la URL del proxy con credenciales de autenticación

    Otra solución es intentar acceder a la URL del proxy con credenciales de autenticación mediante el formato de la siguiente manera:

    https://${proxy_user}:${proxy_password}@${url_to_reach.com}
    

    Sin embargo, si esto no funciona y aún se muestra la ventana emergente del navegador que solicita credenciales, puede intentar crear un perfil personalizado con Firefox y Chrome, el cual debería tener las credenciales de autenticación guardadas. Esto se puede hacer utilizando la opción --profile con Firefox y la opción --user-data-dir con Chrome.

    Solución 3: Utilizar JavaScript e ingresar texto en la alerta

    También puede intentar utilizar la palabra clave Input Text Into Alert con JavaScript para completar los campos de la alerta de la siguiente manera:

    Ejecutar JavaScript    alertUser = window.alert('Ingrese usuario')
    Input Text Into Alert    text=${username}
    Ejecutar JavaScript    alertPass = window.alert('Ingrese contraseña')
    Input Text Into Alert    text=${password}
    

    Alternativamente, puede intentar utilizar JavaScript para establecer las credenciales de autenticación del proxy de la siguiente manera:

    Ejecutar JavaScript    var username = 'tu_usuario';
                          var password = 'tu_contraseña';
                          var auth = btoa(username + ':' + password);
                          var config = { 
                                    mode: 'pac_script', 
                                    pacScript: { 
                                        data: 'function FindProxyForURL(url, host) { return "PROXY tu_proxy:puerto;pac-url=https://tu_url_script_pac; PROXY ' 
                                        + 'tu_proxy2:puerto; DIRECT"}' }
                                  }; 
                          var prefs = {
                              'network.proxy.type': 1,
                              'network.proxy.http': 'tu_proxy',
                              'network.proxy.http_port': 'puerto',
                              'network.proxy.ssl': 'tu_proxy',
                              'network.proxy.ssl_port': 'puerto',
                              'network.proxy.socks': 'tu_proxy',
                              'network.proxy.socks_port': 'puerto',
                              'network.proxy.socks_version': 5,
                              'network.proxy.socks_remote_dns': true,
                              'network.proxy.share_proxy_settings': true,
                              'network.proxy.no_proxies_on': ''
                          };
    
                          prefs['network.proxy.http_user'] = username;
                          prefs['network.proxy.http_password'] = password;
                          prefs['network.proxy.share_proxy_settings'] = true;
                          prefs['network.proxy.type'] = 2;
    
                          window.navigator.__defineGetter__('userAgent', function(){
                              return 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3';
                          }); 
                          window.navigator.__defineGetter__('platform', function(){
                              return 'Win32';
                          }); 
                          var configData = 'data:text/javascript,' + encodeURIComponent(config.pacScript.data);
                          Object.keys(prefs).forEach(function(prefName)
                          {
                            var prefValue = prefs[prefName];
                            Promise.resolve().then(_=> browser.proxy.settings.set({
                              'scope': 'regular',
                              'value': { 
                                'proxyType': config.mode, 
                                'httpProxy': config.mode == 'pac_script' ? configData : config.data, 
                                'sslProxy': config.mode == 'pac_script' ? configData : config.data, 
                                'socksProxy': config.mode == 'pac_script' ? configData : config.data, 
                                'ftpProxy': config.mode == 'pac_script' ? configData : config.data, 
                                'pacUrl': config.mode == 'pac_script' ? configData : config.data, 
                                'proxyDNS': true, 
                                'autoConfigUrl': '', 
                                'noProxiesOn': prefs['network.proxy.no_proxies_on'], 
                                'proxyAuth': auth }}})).then(function()
                                {
                                    window.close();
                                });
                          });
    
    

    Nota: Estas soluciones pueden no funcionar en todos los casos, y es posible que necesite ajustar su configuración para su situación específica.

Comments are closed.