Selenium
Last updated
Last updated
Selenium es una herramienta de automatización de pruebas y scrapeo web que permite controlar y manipular navegadores web de forma programática. Permite simular interacciones humanas en una página web, automatizar pruebas funcionales, extraer datos y realizar tareas repetitivas en aplicaciones web, todo a través de su API fácil de usar y soporte para varios navegadores.
Su instalacion es muy sencilla tansolo tienes que instalarlo con pip insatall
y despues instalar el Driver que desees utilzar. Aqui tienes una guia
El webdriver de Selenium es una herramienta popular y potente para la automatización de pruebas y el scrapeo web. Permite controlar un navegador web real o un navegador en modo headless para interactuar con páginas web, realizar acciones y extraer datos de manera programática.
Para poder utilizarlo una vez lo hayamos instalado, tan solo tenemos que instanciarlo en nuestro script:
Con este codido establecemos que vamos a utilizar el driver de google chrome que esta en el directorio actual y mediante ese driver abriremos en el navegador la pagina duckduckgo.com
. Una vez abierto lo cerraremos con driver.close()
. Esto es necesario si no se llenara la memoria.
Sin embargo hay una manera mas eficiente inicializar el webdriver sin tener que especifcar la ruta del driver:
En ete ejemplo estamos utilizando la funcion which
de la libreria shutil
para bsucar el drive de crome ya que esta funcion sirve para buscar la ruta de un archivo ejecutable en el sistema operativo.
La opción headless
en Selenium se utiliza para ejecutar el navegador en modo sin interfaz gráfica. Es una buena práctica usar esta opción en la automatización de pruebas y otras tareas donde no se requiere ver el navegador. Proporciona beneficios como mayor eficiencia, rendimiento y escalabilidad al eliminar la necesidad de mostrar la interfaz gráfica.
Para implemntarlo tan solohay que hacer lo siguiente:
En Selenium, la búsqueda y manipulación de elementos en una página web es una parte fundamental de la automatización de pruebas y el scrapeo web. En este artículo, exploraremos las distintas maneras de buscar elementos con Selenium y cómo utilizar los métodos adecuados para acceder y manipularlos.
La búsqueda por ID es una forma común y eficiente de localizar elementos en una página web. Utiliza el método find_element_by_id
para buscar un elemento específico por su ID único. Aquí tienes un ejemplo:
Otra manera de buscar elementos es por el nombre de etiqueta HTML. Utiliza el método find_element_by_tag_name
para buscar un elemento por su nombre de etiqueta. Por ejemplo:
Puedes buscar elementos por su clase utilizando el método find_element_by_class_name
. Este método devuelve el primer elemento que coincide con la clase especificada. Aquí tienes un ejemplo:
Selenium también permite buscar elementos utilizando selectores CSS. Utiliza el método find_element_by_css_selector
para buscar elementos que coincidan con un selector CSS específico. Por ejemplo:
XPath es otra forma poderosa de buscar elementos en una página web. Utiliza el método find_element_by_xpath
para buscar elementos que coincidan con una expresión XPath específica. Aquí tienes un ejemplo:
En Selenium, la interacción con elementos de una página web es fundamental para realizar tareas automatizadas y pruebas funcionales. En este artículo, exploraremos las distintas acciones que se pueden realizar sobre un elemento utilizando Selenium, como enviar texto, hacer clic, obtener atributos y más.
Enviar texto a un elemento es una acción común en la automatización de pruebas y el scrapeo web. Utiliza el método send_keys
para ingresar texto en un campo de entrada. Aquí tienes un ejemplo:
En este caso, el método send_keys
se utiliza para ingresar el texto "Texto de ejemplo" en el elemento identificado por su ID único.
Hacer clic en un elemento es una acción común para interactuar con enlaces, botones u otros elementos interactivos. Utiliza el método click
para simular un clic en un elemento. Aquí tienes un ejemplo:
En este ejemplo, el método click
se utiliza para hacer clic en el elemento con la clase CSS "my-button".
Puedes obtener atributos específicos de un elemento utilizando el método get_attribute
. Esto es útil para extraer información relevante de elementos, como URLs de imágenes o valores de atributos personalizados. Aquí tienes un ejemplo:
En este caso, se utiliza el método get_attribute
para obtener el valor del atributo "src" del elemento de imagen.
Para obtener el texto visible de un elemento, puedes utilizar el atributo text
o el método get_text
. Aquí tienes un ejemplo:
En este ejemplo, se utiliza el atributo text
para obtener el texto visible del elemento con la clase CSS "my-element".
A veces, es necesario esperar a que un elemento esté visible antes de interactuar con él. Utiliza el método WebDriverWait
junto con las condiciones de espera predefinidas, como visibility_of_element_located
, para esperar a que un elemento esté visible. Por ejemplo:
En este ejemplo, se utiliza WebDriverWait
junto con la condición visibility_of_element_located
para esperar hasta que el elemento con el ID "my-element-id" esté visible.
Si deseas borrar el contenido de un campo de entrada antes de enviar nuevo texto, puedes utilizar el método clear
. Aquí tienes un ejemplo:
En este caso, el método clear
se utiliza para borrar el contenido del campo de entrada identificado por su ID único.
Selenium también permite simular acciones de teclado, como pulsar teclas especiales o realizar combinaciones de teclas. Puedes utilizar la clase Keys
para enviar teclas específicas. Aquí tienes un ejemplo:
En este ejemplo, se envía la tecla "Enter" al elemento y se realiza la combinación de teclas "Control + a" para seleccionar todo el texto en un campo de entrada.
Scrapy-Selenium es una extensión de Scrapy que combina Selenium y Scrapy para el scrapeo de sitios web dinámicos. Permite interactuar con JavaScript y extraer datos de manera eficiente. Con Scrapy-Selenium, obtienes lo mejor de ambos mundos: la potencia de Selenium y las capacidades avanzadas de scrapeo de Scrapy. Es ideal para scrapear sitios web complejos.
Para empezar necesitas instalar la libreria scrapy-splash
con el siguiente comando:
A continuación, para integrar scrapy-selenium en el proyecto hay que actualiar el archivo settings.py con la siguiente configuración si usa un controlador de Chrome:
O estas configuraciones si usa un controlador FireFox:
Para implementar código de Selenium en un spider de Scrapy utilizando scrapy-selenium
, puedes utilizar el objeto self.browser
o response.meta['driver']
proporcionado por la extensión. Aquí tienes un ejemplo:
Una vez hays realizado todas las acciones que dees con selenium puede qe el codigo fuente hay cambaido. De ser asi ahora las acciones de scrappy no podremos realizarlas sobre request
si no sobre un nuevo codigo fuente proprocionado por selenium. Esto se hace de la sigueinte manera: