Selenio

Usando Selenium con el controlador de Firefox

Usando Selenium con el controlador de Firefox
Selenium es una gran herramienta para pruebas de navegadores, automatización web y raspado web. El selenio puede controlar la mayoría de los navegadores web modernos. I.mi., Firefox, Chrome, Chromium, Opera, Apple Safari. Para controlar un navegador, Selenium necesita una herramienta llamada controlador web. La mayoría de los proveedores de navegadores modernos proporcionan el software de controlador web para sus navegadores web.

Para controlar el navegador web Mozilla Firefox desde Selenium, debe utilizar el controlador web Gecko.

En este artículo, le mostraré cómo configurar Selenium para ejecutar pruebas de navegador, automatización web, tareas de raspado web utilizando el navegador web Mozilla Firefox. Entonces empecemos.

Requisitos previos:

Para probar los comandos y ejemplos de este artículo, debe tener,

1) Una distribución de Linux (preferiblemente Ubuntu) instalada en su computadora.
2) Python 3 instalado en su computadora.
3) PIP 3 instalado en su computadora.
4) Mozilla Firefox instalado en su computadora.

Puede encontrar muchos artículos sobre estos temas en LinuxHint.com. Asegúrese de revisarlos si necesita ayuda.

Preparación del entorno virtual de Python 3 para el proyecto:

El entorno virtual de Python se utiliza para crear un directorio de proyecto de Python aislado. Los módulos de Python que instale usando PIP se instalarán solo en el directorio del proyecto, no globalmente.

Pitón virtualenv El módulo se utiliza para administrar entornos virtuales de Python.

Puedes instalar Python virtualenv módulo globalmente utilizando PIP 3 de la siguiente manera:

$ sudo pip3 instalar virtualenv

Pitón virtualenv debe ser instalado.

Crea un directorio de proyecto selenium-firefox / en su directorio de trabajo actual de la siguiente manera:

$ mkdir -pv selenium-firefox / drivers

Navega hasta el directorio de tu proyecto recién creado selenium-firefox / como sigue:

$ cd selenium-firefox /

Cree un entorno virtual de Python en el directorio de su proyecto con el siguiente comando:

$ virtualenv .venv

El entorno virtual de Python debe crearse en el directorio de su proyecto.

Active el entorno virtual de Python desde el directorio de su proyecto con el siguiente comando:

$ fuente .env / bin / activar

Instalación de la biblioteca de Selenium Python:

La biblioteca de selenio está disponible en el repositorio oficial de Python PyPI.

Puede instalar la biblioteca Selenium Python usando PIP 3 de la siguiente manera:

$ pip3 instalar selenium

Se debe instalar la biblioteca Selenium Python.

Instalación del controlador de Firefox Gecko:

Para descargar el controlador Firefox Gecko, visite la página de lanzamientos de GitHub de mozilla / geckodriver desde su navegador web favorito.

Como puede ver, v0.26.0 es la última versión del controlador Firefox Gecko en el momento de escribir este artículo.

Para descargar el controlador Firefox Gecko, desplácese hacia abajo un poco y haga clic en el tar de Linux geckodriver.archivo gz dependiendo de la arquitectura de su sistema operativo.

Si está utilizando un sistema operativo de 32 bits, haga clic en el geckodriver-v0.26.0-linux32.alquitrán.gz Enlace.

Si está utilizando un sistema operativo de 64 bits, haga clic en el geckodriver-v0.26.0-linuxx64.alquitrán.gz Enlace.

Descargaré la versión de 64 bits del controlador Firefox Gecko.

Su navegador debería pedirle que guarde el archivo. Seleccione Guardar el archivo y haga clic en OK.

El controlador de Firefox Gecko debe descargarse.

El archivo del controlador Firefox Gecko debe descargarse en el ~ / Descargas directorio.

Puede extraer el geckodriver-v0.26.0-linux64.alquitrán.gz archivo del ~ / Descargas directorio al conductores / directorio de su proyecto con el siguiente comando:

$ tar -xzf ~ / Descargas / geckodriver-v0.26.0-linux64.alquitrán.controladores gz -C /

Una vez que se extrae el archivo del controlador Firefox Gecko, un nuevo archivo binario geckodriver debe ser creado en el conductores / directorio de su proyecto, como puede ver en la captura de pantalla a continuación.

Comenzando con Selenium usando Firefox Gecko Driver:

En esta sección, le mostraré cómo configurar su primer script Selenium Python para probar si el controlador Firefox Gecko está funcionando.

Primero, cree una nueva secuencia de comandos de Python ex00.py en el directorio de su proyecto y escriba las siguientes líneas en él.

desde el controlador web de importación de selenio
de selenio.webdriver.común.claves importar claves
browser = webdriver.Firefox (ruta_ejecutable = "./ drivers / geckodriver ")
navegador.get ('https: // www.linuxhint.com ')
print ('Título:% s'% navegador.título)
navegador.dejar()

Una vez que haya terminado, guarde ex00.py Secuencia de comandos de Python.

Las lneas 1 y 2 importan todos los componentes requeridos del selenio Biblioteca de Python.

La línea 4 crea un objeto de controlador web de Firefox usando el webdriver.Firefox () método y lo almacena en un navegador variable. La ruta_ejecutable El argumento se usa para decirle al controlador web dónde buscar el binario del controlador Firefox Gecko. En este caso, el geckodriver binario del conductores / directorio del proyecto.

En la línea 6, navegador.obtener() el método se carga linuxhint.com en un navegador web Firefox.

Una vez que el sitio web termina de cargarse, la línea 7 imprime el título del sitio web, aquí, navegador.título La propiedad se utiliza para acceder al título del sitio web.

La línea 8 cierra el navegador web Firefox usando el navegador.dejar() método.

Puede ejecutar la secuencia de comandos de Python ex00.py con el siguiente comando:

$ python3 ex00.py

Selenium debería abrir un navegador web Firefox y visitar linuxhint.sitio web com automáticamente.

Una vez que se cargue la página, debería imprimir el título del sitio web en la consola y el navegador web debería cerrarse automáticamente.

Entonces, Selenium está funcionando correctamente con el controlador de Firefox Gecko.

Ejemplo 01: Ejecutar Firefox en modo sin cabeza usando Selenium

También puede ejecutar Selenium con Firefox Gecko Driver en modo sin cabeza. El modo sin cabeza de Selenium Firefox no requiere ninguna interfaz gráfica de usuario instalada en su computadora. Por lo tanto, podrá ejecutar Selenium Firefox en cualquier servidor sin cabeza de Linux.

Primero, cree una nueva secuencia de comandos de Python ex01.py en el directorio de su proyecto y escriba las siguientes líneas de códigos en él.

desde el controlador web de importación de selenio
de selenio.webdriver.Firefox.opciones de importación Opciones
de selenio.webdriver.común.claves importar claves
firefoxOptions = Opciones ()
firefoxOptions.add_argument ("- sin cabeza")
browser = webdriver.Firefox (ruta_ejecutable = "./ drivers / geckodriver ", options = firefoxOptions)
navegador.get ('https: // www.linuxhint.com ')
print ('Título:% s'% navegador.título)
navegador.dejar()

Una vez que haya terminado, guarde el ex01.py Secuencia de comandos de Python.

La línea 1 y la línea 3 son iguales a la línea 1 y la línea 2 de ex00.py Secuencia de comandos de Python.

La línea 2 importa Firefox Opciones desde el selenio Biblioteca.

La línea 5 crea un objeto Opciones de Firefox y lo almacena en el firefoxOptions variable.

La línea 6 usa el firefoxOptions.add_argument () método para agregar el -sin cabeza Indicador de línea de comando de Firefox al firefoxOptions objeto.

En la línea 8, opciones El argumento se usa para pasar el firefoxOptions al inicializar el controlador web de Firefox con el webdriver.Firefox () método.

El resto de las líneas del ex01.py El guión es el mismo que el ex00.py.

Puede ejecutar la secuencia de comandos de Python ex01.py con el siguiente comando:

$ python3 ex01.py

Como puede ver, el título del sitio web (linuxhint.com) se imprime en la consola sin abrir ninguna versión gráfica del navegador web Firefox.

Como puede ver, Selenium también está trabajando en un entorno sin cabeza de Ubuntu donde no tengo una interfaz gráfica de usuario instalada.

Ahora que sabes cómo pasar el -sin cabeza Indicador / opción de línea de comandos de Firefox utilizando el controlador Selenium Firefox Gecko, también puede pasar cualquier otro indicador / opción de línea de comando de Firefox.

Puede encontrar todos los indicadores / opciones de la línea de comandos de Firefox compatibles en las opciones de la línea de comandos - Mozilla | Página MDN.

Ejemplo 02: Extracción de Lorem Ipsum con selenio

En esta sección, le mostraré cómo realizar un desguace web básico con el controlador Selenium Firefox Gecko.

Primero, visite la página del generador Lorem Ipsum desde el navegador web Firefox. Como puede ver, la página generó 5 párrafos aleatorios. Extraigamos todo el texto generado (los 5 párrafos) de esta página.

Antes de comenzar a extraer información de una página web, debe conocer la estructura HTML del contenido de la página web.

Puede encontrar fácilmente la estructura HTML del contenido que desea extraer utilizando el Herramienta de desarrollo de Firefox. Abrir Herramienta de desarrollo de Firefox, presione el botón derecho del mouse (RMB) en la página y haga clic en Inspeccionar elemento (Q).

Herramienta de desarrollo de Firefox debe ser abierto. Haga clic en el Inspeccionar icono () como se marca en la captura de pantalla a continuación.

Desplácese sobre el primer párrafo, como se muestra en la captura de pantalla a continuación. Luego, presione el botón izquierdo del mouse (LMB) para seleccionarlo.

La estructura HTML de los párrafos debe mostrarse en la Inspeccionar pestaña de la Herramienta de desarrollo de Firefox. Como puede ver, los párrafos de lorem ipsum generados están dentro de un div etiqueta que tiene el identificación lipum.

Para extraer los párrafos de lorem ipsum usando Selenium Firefox Gecko Driver, cree un nuevo script de Python ex02.py en el directorio de su proyecto y escriba las siguientes líneas de códigos en él.

desde el controlador web de importación de selenio
de selenio.webdriver.Firefox.opciones de importación Opciones
de selenio.webdriver.común.claves importar claves
firefoxOptions = Opciones ()
firefoxOptions.add_argument ("- sin cabeza")
browser = webdriver.Firefox (ruta_ejecutable = "./ drivers / geckodriver ", options = firefoxOptions)
navegador.get ('https: // www.lipum.com / feed / html ')
lipsum = navegador.find_element_by_id ('suma de labios')
imprimir (lipum.texto)
navegador.dejar()

Una vez que haya terminado, guarde el ex02.py Secuencia de comandos de Python.

La línea 10 carga la página del generador de lorem ipsum usando el navegador.obtener() método.

El contenido de lorem ipsum está dentro de un div etiqueta con la identificación lipum. La línea 12 usa el navegador.find_element_by_id () método para seleccionarlo de la página web y almacenarlo en el lipum variable.

La línea 13 imprime el contenido de lorem ipsum generado en la consola. Aquí el texto se utiliza para acceder al contenido de la div elemento con la identificación lipum.

Ahora, ejecute el script de Python ex02.py como sigue:

$ python3 ex02.py

Como puede ver, Selenium extrajo correctamente el contenido de lorem ipsum de la página web.

Ejecutando el script de Python ex02.py nuevamente le dará una salida diferente, como puede ver en la captura de pantalla a continuación.

Ejemplo 03: extracción de datos de lista con selenio

En esta sección, le mostraré un ejemplo de la lista de eliminación de datos web de un sitio web que usa el controlador Selenium Firefox Gecko en modo sin cabeza.

Primero, visite el generador de nombres aleatorios.información del navegador web Firefox. Este sitio web generará 10 nombres aleatorios cada vez que recargue la página, como puede ver en la captura de pantalla a continuación. Nuestro objetivo es extraer estos nombres aleatorios usando Selenium en modo sin cabeza.

Para conocer la estructura HTML de la lista, debe abrir el Herramienta de desarrollo de Firefox. Para hacer eso, presione el botón derecho del mouse (RMB) en la página y haga clic en Inspeccionar elemento (Q).

Herramienta de desarrollo de Firefox debe ser abierto. Haga clic en el Inspeccionar icono () como se marca en la captura de pantalla a continuación.

Luego, coloque el cursor sobre la lista de Nombres aleatorios. La lista debe resaltarse como se indica en la captura de pantalla a continuación. Luego, presione el botón izquierdo del mouse (LMB) para seleccionar la lista.

El código HTML de la lista debe resaltarse en el Inspector pestaña de la Herramienta de desarrollo de Firefox. Aquí, la lista de nombres aleatorios está dentro de un div elemento. La div elemento tiene el clase nombre resultados. En su interior, tenemos un ol elemento con el clase nombre lista de nombres. Dentro de ol elemento, cada uno de los nombres está en un li elemento.

De esto podemos decir que para llegar al li etiquetas, tenemos que seguir div.resultados> ol.nameList> li

Entonces, nuestro selector de CSS será div.resultados ol.nameList li (solo reemplace el > letreros con espacios en blanco)

Para extraer estos nombres aleatorios, cree una nueva secuencia de comandos de Python ex03.py y escriba las siguientes líneas de códigos en él.

desde el controlador web de importación de selenio
de selenio.webdriver.Firefox.opciones de importación Opciones
de selenio.webdriver.común.claves importar claves
firefoxOptions = Opciones ()
firefoxOptions.add_argument ("- sin cabeza")
browser = webdriver.Firefox (ruta_ejecutable = "./ drivers / geckodriver ", options = firefoxOptions)
navegador.get ("http: // generador-de-nombres-aleatorios.info / ")
nameList = navegador.find_elements_by_css_selector ('div.resultados ol.nameList li ')
para el nombre en nameList:
imprimir (nombre.texto)
navegador.dejar()

Una vez que haya terminado, guarde el ex03.py Secuencia de comandos de Python.

La línea 10 carga el sitio web del generador de nombres aleatorios usando el navegador.obtener() método.

La línea 11 selecciona la lista de nombres usando el navegador.find_elements_by_css_selector () método. Este método usa el selector de CSS div.resultados ol.nameList li para encontrar la lista de nombres. Luego, la lista de nombres se almacena en el lista de nombres variable.

En las líneas 13 y 14, un por El bucle se usa para iterar a través del lista de nombres lista de li elementos. En cada iteración, el contenido de la li El elemento está impreso en la consola.

Ahora, ejecute el script de Python ex03.py como sigue:

$ python3 ex03.py

Como puede ver, la secuencia de comandos de Python ex03.py obtuvo todos los nombres aleatorios de la página web.

Si ejecuta el script por segunda vez, debería devolver una nueva lista de nombres aleatorios, como puede ver en la captura de pantalla a continuación.

Conclusión:

Este artículo debería ayudarlo a comenzar con Selenium utilizando el navegador web Firefox. Debería poder configurar un proyecto de controlador Selenium Firefox Gecko con bastante facilidad y ejecutar las pruebas de su navegador, la automatización web y las tareas de raspado web.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...