Emular mouse hover en Selenium con Python
Juan Pablo Romero
Software EngineerMuchas veces hay elementos en aplicaciones web que solo son visibles o accesibles pasando el mouse sobre el elemento en cuestión, un caso común es un menú desplegable, que no muestra sus elementos hijos hasta cuando el mouse es puesto primero sobre el elemento padre.
Selenium nos facilita la emulación del mouse hover con una clase llamada ActionChains.
Bien, lo que tenemos que hacer es ubicar el elemento que dispara un evento al hacer un mouse over, puede ser cualquier elemento, ya sea un <li>, <ul>, <img />, <a>, o cualquier elemento que al hacer mouse hover dispare algún evento.
En este caso el elemento en cuestión es una imagen, cuando el mouse pasa por encima de la imagen se muestra un link, este link solo puede ser accedido por selenium cuando se hace un mouse hover sobre la imagen.
Lo primero que se tiene que hacer es importar la clase ActionChains:
En" class="redactor-autoparser-object">https://gist.github.com/337857... este caso se ubica el elemento img por el xpath, aunque el elemento en cuestión también puede ser ubicado por id, clase o el método que sea más cómodo:
Se" class="redactor-autoparser-object">https://gist.github.com/337854... usa la clase ActionChains a la que se le pasa una instancia del webdriver que estemos usando, en la misma línea usamos el método move_to_element() de la clase ActionsChains que recibe el elemento en cuestión que en este caso es la imagen, este método lo que hace es que Selenium ubique “el puntero del mouse” encima de la imagen, y por último todo esto se guarda en una variable llamada hover:
Ahora" class="redactor-autoparser-object">https://gist.github.com/337855... que tenemos todas las acciones asignadas a la variable hover es necesario usar el método perform() que es el que ejecuta todas las instrucciones guardadas en la variable hover, si este método no es llamado, las acciones nunca se ejecutarán:
Cuando" class="redactor-autoparser-object">https://gist.github.com/337856... las acciones se ejecutan con la instrucción anterior, aparecerá el link con el que queremos interactuar.
Por último se esperan 2 segundos que es un tiempo prudente para esperar a que el link aparezca y se hace click en el link que es ubicado por el texto que contiene:
Para" class="redactor-autoparser-object">https://gist.github.com/337856... más info sobre la clase ActionChains pueden visitar el siguiente link.
Written by Juan Pablo Romero
Juan Pablo designs and builds robust software solutions with a focus on performance and usability. His problem-solving skills and attention to detail ensure high-quality and efficient applications.