Cómo manejar la alerta de seguridad en Firefox con Selenium

Estoy usando Selenium-webdriver con ruby ​​para escribir pruebas automatizadas.

Chrome y el binario chromedriver funcionan realmente bien, pero tengo un problema con Firefox que está relacionado con la configuración del navegador y que hace que mis pruebas fallen, mientras que pasan con Chrome.

Al ejecutar las pruebas en Firefox, a veces recibo una alerta con este mensaje:

Aunque esta página está cifrada, la información que ingresó se enviará a través de una conexión no cifrada y podría ser leída fácilmente por un tercero

Y se rompe la ejecución. ¿Hay alguna forma de desactivar esta advertencia en las versiones recientes de Firefox (10+) o de manejar este comportamiento con Selenium?

En el proceso de encontrar una solución para esto, creo que podría haber encontrado un error en Capybara (v1.1.2).

Logré solucionar este problema usando el siguiente enfoque, en lugar de usar el click de capybara (que no me permitiría capturar una excepción), comencé a usar el método de click de selenium-webdriver.

Parece que cuando Firefox activa este buzón de alerta, aparece una cadena con el mensaje.

Aunque esta página está cifrada, la información que ingresó se enviará a través de una conexión no cifrada y podría ser leída fácilmente por un tercero

se devuelve como resultado de object.native.click , de lo contrario la cadena

De acuerdo

es regresado.

 # Define the click method in ruby and call it when you're executing a 'click' # Public: Click the object. # # object - Capybara::Node::Element object to click. def click object return_string = object.native.click check_firefox_alertbox if return_string == "ok" end def check_firefox_alertbox if @current_browser == :firefox @session.driver.browser.switch_to.alert.accept end rescue Exception => e puts e end 

Esto es lo que puedes hacer. Escribe about:config en el firefox. Se le presentarán varias opciones (una vez que pase por un mensaje de advertencia).

Tienes que buscar security.warn_leaving_secure; y security.warn_leaving_insecure . Haz que ambos sean falsos. Y serías bueno para irte.

Tenga en cuenta que: esto solo funcionaría en la instancia FF a la que haya hecho modificaciones, por lo que deberá usar el perfil de Firefox para iniciar esta instancia.

Espero que esto ayude.

En realidad, esto significaba ser un comentario, pero tengo que superar los 50 para poder comentar … Supongo que al “romper” la ejecución, ¿te refieres al de Ruby Script, verdad? ¿Qué pasa con Firefox? ¿Necesita un click para proceder? Si ese es el caso, puede improvisar capturando el error de Ruby después de insertar el código confidencial (donde se rompe) entre una cláusula BEGIN y RESCUE … Algo así.

  BEGIN . . Code that is giving you a headache . . RESCUE . Capture the exception and give Ruby a chance to continue the script normally. . . END 

Alternativamente, si no te gusta la solución anterior, puedes ir a Firefox y luego escribir en el cuadro de dirección acerca de: config . Filtre por ‘ security.warn ‘ y establezca en falso todas las variables booleanas que ve allí. Buen viaje, dedos cruzados;)