Recientemente estaba realizando un automatización de un procedimiento web y me he encontrado con un problema que he tenido que dar bastantes vueltas para resolverlo.
En un principio comencé grabando la interacción con el Selenium IDE y todo funcionaba correctamente en el navegador de pruebas. El problema venía cuando esto se intentaba trasladar a otro navegador y es que la página web requería que el navegador compartiese la ubicación.
Por defecto todos los navegadores bloquean estas peticiones y tenemos que dar acceso individualmente a cada dominio. Esto se hace con la clásica ventana modal de petición como la siguiente:
Una vez que lo hayamos aceptado el navegador guardará ese permiso y el sitio funcionará correctamente.
El problema es que al realizar una automatización con Selenium no partimos necesariamente de un navegador con una configuración determinada. Por lo tanto tendremos que añadir esta configuración en los tests para que siempre funcione correctamente.
La solución que voy a mostrar es para Firefox y los tests están escritos en Python. En la creación del webdriver tendremos que pasarle un conjunto de opciones que se convertirán en las preferencias de la instancia del navegador.
def setup_method(self, method):
options = Options()
options.set_preference('geo.enabled', True)
options.set_preference('geo.prompt.testing', True)
options.set_preference('geo.prompt.testing.allow', True)
options.set_preference('permissions.default.geo', True)
options.set_preference('geo.provider.network.url', 'data:application/json,{"location": {"lat": 40.7590, "lng": -73.9845}, "accuracy": 27000.0}')
self.driver = webdriver.Firefox(options=options)
En el JSON del campo geo.provider.network.url podremos modificar los valores de longitud, latitud y precisión a los que nos interesen para nuestro caso.
Es importante reseñar que este método funciona únicamente en versiones recientes de Firefox porque los nombres de algunas preferencias han cambiado.
También reseñar que este sistema es totalmente compatible con lanzar los tests en remoto en Selenium Grid.
Comentarios1
¡Hola! Es un placer…
¡Hola! Es un placer saludarte. Quería escribirte porque creo que Mariogalan tiene una gran oportunidad de aparecer en prensa como noticia real y destacarse en los principales periódicos digitales con publicaciones de alto impacto.
Aquí te detallo los beneficios de esta propuesta:
* Aparición garantizada: Publicación asegurada en más de 40 periódicos digitales de gran autoridad.
* Artículos reales: No se marcan como publicidad y nunca se borran, potenciando el posicionamiento de tu web en los primeros lugares de internet.
* Contenido que impulsa tu marca: Perfecto para compartir en tu web y redes sociales, mejorando tu reputación online.
* Política de devolución: Si no se publica, te devolvemos el dinero.
Por menos de 100e, puedes obtener un impacto mediático valorado en más de 7.000e. Incluso, me encantaría ofrecerte un mes gratuito para que pruebes los resultados en tu negocio.
Puedes confirmarme un número de teléfono o reservar una llamada desde el siguiente enlace: https://calendly.com/aparecer-prensa/15min
Saludos,