Usar selenio con controlador de Firefox

Usar selenio con controlador de Firefox
Selenium es una gran herramienta para las pruebas de navegador, la automatización web y el raspado web. Selenium 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 Web Driver. La mayoría de los proveedores modernos de navegadores proporcionan el software del controlador web para sus navegadores web.

Para controlar el navegador web de Mozilla Firefox desde Selenium, debe usar 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.

Prerrequisitos:

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.comunicarse. Asegúrese de consultarlos si necesita alguna 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 Python que instale utilizando PIP se instalarán solo en el directorio del proyecto, no a nivel mundial.

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

Puedes instalar python virtualenv Módulo a nivel mundial usando PIP 3 de la siguiente manera:

$ sudo pip3 instalar virtualenv

Pitón virtualenv debe instalarse.

Crear un directorio de proyecto selenium-firefox/ En su directorio de trabajo actual de la siguiente manera:

$ mkdir -pv selenium -firefox/conductores

Navegue a su directorio de proyectos recién creado selenium-firefox/ como sigue:

$ CD Selenium-Firefox/

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

$ virtualenv .venado

Se debe crear un entorno virtual de Python en su directorio de 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:

Selenium Library está disponible en el repositorio oficial de Python Pypi.

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

$ PIP3 Instalar selenio

Se debe instalar la biblioteca de Selenium Python.

Instalación del controlador Gecko Firefox:

Para descargar el controlador de gecko de Firefox, visite la página de lanzamientos de GitHub de Mozilla/Geckodriver desde su navegador web favorito.

Como puedes ver, v0.26.0 es la última versión de Firefox Gecko Driver en el momento de este escrito.

Para descargar el controlador Gecko Firefox, desplácese hacia abajo un poco y haga clic en el alquitrán de Geckodriver de Linux.Archivo GZ según 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 Gecko Firefox.

Su navegador debe pedirle que guarde el archivo. Seleccionar Guardar el archivo y haga clic en DE ACUERDO.

Se debe descargar el controlador de gecko de Firefox.

El archivo de controladores de gecko de Firefox debe descargarse en el ~/Descargas directorio.

Puedes 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 de gecko de Firefox, un nuevo archivo binario geckodriver debe crearse en el conductores/ Directorio de su proyecto, como puede ver en la captura de pantalla a continuación.

Comenzando con Selenium usando el controlador de gecko de Firefox:

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

Primero, crea un nuevo script de Python ex00.py en su directorio de proyecto y escriba las siguientes líneas en él.

Desde Selenium Import WebDriver
de Selenium.webdriver.común.llaves de importación de teclas
navegador = webdriver.Firefox (ejecutable_path = "./controladores/geckodriver ")
navegador.Get ('https: // www.Linuxhint.com ')
Imprimir ('Título: % S' % navegador.título)
navegador.abandonar()

Una vez que haya terminado, guarda ex00.py Guión de pitón.

La línea 1 y 2 importe todos los componentes requeridos desde el selenio Biblioteca de Python.

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

En la línea 6, navegador.conseguir() Método se carga Linuxhint.comunicarse En un navegador web de Firefox.

Una vez que el sitio web termina de cargar, 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 utilizando el navegador.abandonar() método.

Puedes ejecutar el guión de Python ex00.py Con el siguiente comando:

$ python3 ex00.py

Selenium debe abrir un navegador web Firefox y visitar el Linuxhint.COM sitio web automáticamente.

Una vez que se carga la página, debe imprimir el título del sitio web en la consola, y el navegador web debe cerrar automáticamente.

Entonces, Selenium funciona correctamente con el controlador de gecko de Firefox.

Ejemplo 01: Ejecutar Firefox en modo sin cabeza usando Selenium

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

Primero, crea un nuevo script de Python ex01.py en su directorio de proyecto y escriba las siguientes líneas de códigos en él.

Desde Selenium Import WebDriver
de Selenium.webdriver.Firefox.Opciones de importación Opciones
de Selenium.webdriver.común.llaves de importación de teclas
FirefoxOptions = options ()
Firefoxoptions.add_argument ("-sin cabeza")
navegador = webdriver.Firefox (ejecutable_path = "./controladores/geckodriver ", options = firefoxoptions)
navegador.Get ('https: // www.Linuxhint.com ')
Imprimir ('Título: % S' % navegador.título)
navegador.abandonar()

Una vez que haya terminado, guarde el ex01.py Guión de pitón.

La línea 1 y la línea 3 son las mismas que la línea 1 y la línea 2 de ex00.py Guión de pitón.

Línea 2 Importa Firefox Opción desde el selenio biblioteca.

La línea 5 crea un objeto de 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 Bandera de línea de comandos de Firefox al Firefoxoptions objeto.

En la línea 8, opción El argumento se usa para pasar el Firefoxoptions mientras inicializa el controlador web de Firefox utilizando el webdriver.Firefox () método.

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

Puedes ejecutar el guión 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 instalación de interfaz gráfica de usuario.

Ahora que sabes cómo pasar el -sin cabeza FINAL DE COMANDO FIRFOX FLAG/OPCIÓN Uso del controlador de gecko de Selenium, también puede pasar cualquier otra bandera/opciones de la línea de comandos de Firefox.

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

Ejemplo 02: Extracción de Lorem ipsum usando selenio

En esta sección, le mostraré cómo hacer el desguace web básico con el controlador de gecko de Selenium Firefox.

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. Extraemos 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 usando el Herramienta de desarrollador de Firefox. Abrir Herramienta de desarrollador de Firefox, Presione el botón derecho del mouse (RMB) en la página y haga clic en Inspeccionar elemento (Q).

Herramienta de desarrollador de Firefox debe abrirse. Clickea en el Inspeccionar icono () como se marca en la captura de pantalla a continuación.

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

La estructura HTML de los párrafos debe mostrarse en el Inspeccionar pestaña del Herramienta de desarrollador de Firefox. Como puede ver, los párrafos de Lorem Ipsum generados están dentro de un div etiqueta que tiene el identificación labio.

Para extraer los párrafos de Lorem Ipsum con el controlador de gecko de Selenium Firefox, cree un nuevo script de Python ex02.py en su directorio de proyecto y escriba las siguientes líneas de códigos en él.

Desde Selenium Import WebDriver
de Selenium.webdriver.Firefox.Opciones de importación Opciones
de Selenium.webdriver.común.llaves de importación de teclas
FirefoxOptions = options ()
Firefoxoptions.add_argument ("-sin cabeza")
navegador = webdriver.Firefox (ejecutable_path = "./controladores/geckodriver ", options = firefoxoptions)
navegador.Get ('https: // www.labio.com/feed/html ')
Lipsum = navegador.find_element_by_id ('Lipsum')
Imprimir (Lipsum.texto)
navegador.abandonar()

Una vez que haya terminado, guarde el ex02.py Guión de pitón.

La línea 10 carga la página del generador Lorem Ipsum utilizando el navegador.conseguir() método.

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

Línea 13 Impresa el contenido de Lorem Ipsum generado en la consola. Aquí el texto la propiedad se utiliza para acceder al contenido del div elemento con la identificación labio.

Ahora, ejecute el guión de Python ex02.py como sigue:

$ python3 ex02.py

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

Ejecutando el guión 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 la lista usando Selenium

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

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

Para conocer la estructura HTML de la lista, debe abrir el Herramienta de desarrollador 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 desarrollador de Firefox debe abrirse. Clickea en el Inspeccionar icono () como se marca en la captura de pantalla a continuación.

Entonces, pasee la lista de Nombres aleatorios. La lista debe destacarse como marcada en la captura de pantalla a continuación. Luego, presione el botón del mouse izquierdo (LMB) para seleccionar la lista.

El código HTML de la lista debe destacarse en el Inspector pestaña del Herramienta de desarrollador de Firefox. Aquí, la lista de nombres aleatorios está dentro de un div elemento. El div El elemento tiene el clase nombre resultados. Dentro de él, tenemos un olio elemento con el clase nombre lista de nombres. Dentro de olio 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 CSS será div.Resultados ol.namelista li (solo reemplace el > Señales con espacio en blanco)

Para extraer estos nombres aleatorios, cree un nuevo script de Python ex03.py y escriba las siguientes líneas de códigos en él.

Desde Selenium Import WebDriver
de Selenium.webdriver.Firefox.Opciones de importación Opciones
de Selenium.webdriver.común.llaves de importación de teclas
FirefoxOptions = options ()
Firefoxoptions.add_argument ("-sin cabeza")
navegador = webdriver.Firefox (ejecutable_path = "./controladores/geckodriver ", options = firefoxoptions)
navegador.Get ("http: // generador de nombre aleatorio.info/")
namelist = navegador.find_elements_by_css_selector ('div.Resultados ol.Namelist li ')
Para el nombre en Namelist:
Imprimir (nombre.texto)
navegador.abandonar()

Una vez que haya terminado, guarde el ex03.py Guión de pitón.

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

La línea 11 selecciona la lista de nombres utilizando el navegador.find_elements_by_css_selector () método. Este método utiliza el selector CSS div.Resultados ol.namelista 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 para el bucle se usa para iterar a través del lista de nombres lista de li elementos. En cada iteración, el contenido del li El elemento se imprime en la consola.

Ahora, ejecute el guión de Python ex03.py como sigue:

$ python3 ex03.py

Como puedes ver, el guión de Python ex03.py obtuvo todos los nombres aleatorios de la página web.

Si ejecuta el script por segunda vez, debe 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 usando el navegador web Firefox. Debería poder configurar un proyecto de controlador Gecko de Selenium Firefox con bastante facilidad y ejecutar las pruebas de navegador, la automatización web y las tareas de raspado web.