Selenio

Automatización web de Selenium con Python

Automatización web de Selenium con Python
Todo el mundo usa la web en un momento u otro, por lo que es un gran llamado para los desarrolladores asegurarse de que sus aplicaciones web funcionen como se espera. En otro caso, la automatización web podría ser muy útil.

Para que cualquier software comercial tenga éxito, debe someterse a un par de pruebas. La automatización podría ser útil para las pruebas de usuario, simulando el uso de software como lo haría un usuario. También es útil para pruebas de penetración, como intentar descifrar contraseñas, realizar inyecciones de SQL, etc.

Además de las pruebas, la automatización web podría ser muy útil para raspar sitios web pesados ​​de JavaScript.

El selenio es una de las herramientas más eficientes para la automatización web. También es muy popular entre diferentes lenguajes, disponible en lenguajes como Java, JavaScript.

Instalación

El selenio se puede instalar en python usando el módulo pip como se muestra en el siguiente comando:

pip instalar selenio

Instalaría la biblioteca y las dependencias necesarias, la instalación se puede confirmar importándola en una sesión interactiva.

$ python
Python 3.5.2 (predeterminado, 14 de septiembre de 2017, 22:51:06)
[CCG 5.4.0 20160609] en Linux
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
>>> importar selenio

Dado que no se produjo ningún error, significa que nuestra instalación se realizó correctamente. Sin embargo, no termina ahí; Esto se debe a que el selenio funciona de la mano con navegadores como Chrome y Firefox y necesita un controlador del navegador para poder continuar con sus funciones.

Vamos a ver cómo instalar los controladores. Para Mozilla Firefox, puede descargar su controlador conocido como geckodriver de la página de github. Si es un usuario de Chrome, puede descargar su controlador conocido como conductor cromado desde el sitio oficial.

Después de la descarga, agrega el controlador a la ruta. Personalmente, me gustaría mantener un archivo de este tipo en mi / usr / local / bin directorio, y le aconsejo que haga lo mismo.

Si desea hacer lo mismo, el siguiente comando debe moverlo de su directorio actual al compartimiento directorio.

$ sudo mv geckodriver / usr / local / bin
$ sudo mv chromedriver / usr / local / bin

Para agregar geckodriver o conductor cromado a la ruta de ese directorio, ejecute el siguiente comando.

$ RUTA de exportación = $ RUTA: / usr / local / bin / geckodriver
$ export PATH = $ PATH: / usr / local / bin / chromedriver

Después de agregar el controlador para su navegador deseado a la ruta, puede confirmar si todo funciona bien ejecutando lo siguiente desde una sesión interactiva.

Para Firefox:

$ python
Python 3.5.2 (predeterminado, 14 de septiembre de 2017, 22:51:06)
[CCG 5.4.0 20160609] en Linux
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
>>> desde el controlador web de importación de selenio
>>> controlador web.Firefox ()

Para Chrome:

$ python
Python 3.5.2 (predeterminado, 14 de septiembre de 2017, 22:51:06)
[CCG 5.4.0 20160609] en Linux
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
>>> desde el controlador web de importación de selenio
>>> controlador = webdriver.Cromo()

Después de ejecutar eso, si aparece un navegador, todo está funcionando bien. Ahora podemos proceder a hacer cosas interesantes con Selenium.

La mayor parte del código para el resto de este artículo se haría en la sesión interactiva, sin embargo, puede escribirlo en un archivo como su script Python habitual.

Además, estaríamos trabajando en el conductor variable del código anterior.

Visitar páginas web

Una vez abierta la página web, puede visitar cualquier página web llamando al obtener método en conductor. El navegador abierto luego carga la dirección pasada, tal como lo haría cuando lo hace usted mismo.

No olvide utilizar http: // o https: //, de lo contrario tendrá que lidiar con errores desagradables.

>>> conductor.get ("http: // google.com ")

Esto cargaría la página de inicio de Google.

Obteniendo el código fuente

Ahora que hemos aprendido a visitar páginas web, podemos extraer datos de la página web visitada.

Desde el conductor objeto, podemos obtener el código fuente llamando al fuente de la página atributo, puede hacer lo que quiera con el html usando la biblioteca BeautifulSoup.

>> conductor.fuente de la página

Llenado de cuadros de texto

Si, por ejemplo, hemos cargado la página de inicio de Google y queremos escribir alguna información en el cuadro de búsqueda; se puede hacer fácilmente.

Para hacer esto, usamos el elemento inspector para verificar el código fuente y ver la información de la etiqueta del cuadro de búsqueda. Para hacer esto, simplemente haga clic derecho en el cuadro de búsqueda y seleccione inspeccionar elemento.

En mi máquina, obtuve lo siguiente:

value = "" aria-label = "Buscar" aria-haspopup = "false" role = "combobox" aria-autocomplete = "list"
style = "border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%;
fondo: transparente
url ("datos: imagen / gif; base64, R0lGODlhAQABAID / AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAICRAEA
Ow% 3D% 3D ") repetir desplazamiento 0% 0%; posición: absoluta; índice z: 6; izquierda: 0px; contorno:
medio ninguno; "dir =" ltr "corrector ortográfico =" falso "tipo =" texto ">

Con el selenio, podemos seleccionar elementos por nombre de etiqueta, id, nombre de clase, etc.

Se pueden implementar con los siguientes métodos:

.find_element_by_id
.find_element_by_tag_name
.find_element_by_class_name
.find_element_by_name

Desde la página web de Google, el cuadro de búsqueda tiene una identificación lst-ib, entonces encontraríamos elemento por id.

>>> cuadro_búsqueda = controlador.find_element_by_id ("lst-ib")

Ahora que hemos encontrado el elemento y lo hemos guardado en un caja de búsqeda variable, podemos llegar a realizar algunas operaciones en el cuadro de búsqueda.

>>> cuadro_búsqueda.send_keys ("Planeta Tierra")

Esto ingresaría el texto "Planeta Tierra" en el cuadro.

>>> cuadro_búsqueda.claro()

Esto borraría el texto ingresado del cuadro de búsqueda. Deberías usar el send_keys método de nuevo, en la siguiente sección estaríamos haciendo clic en el botón de búsqueda para que tengamos algo para buscar.

Haciendo clic en los botones correctos

Ahora que hemos llenado el cuadro de búsqueda con información, podemos continuar y buscar.

De la misma manera que encontramos el cuadro de búsqueda, es de la misma manera que vamos a encontrar el botón de búsqueda.

En mi máquina, obtuve lo siguiente:

type = "enviar">

Mirando esto, podemos hacer uso del atributo de nombre. Podemos obtenerlo usando el siguiente código:

>>> botón_búsqueda = controlador.find_element_by_name ("btnK")

Después de encontrar la etiqueta deseada, podemos hacer clic en el botón con el hacer clic método.

>>> botón_búsqueda.hacer clic()

Sin embargo, tenga cuidado, debido a las sugerencias automáticas de Google, puede terminar buscando otra cosa.

Para evitar esto, debe hacer que el teclado presione la tecla Intro inmediatamente. Las claves están más allá del alcance de este artículo, pero aquí está el código de todos modos.

>>> de selenio.webdriver.común.claves importar claves
>>> cuadro_búsqueda = controlador.find_element_by_id ("lst-ib")
>>> cuadro_búsqueda.send_keys ("Planeta Tierra")
>>> cuadro_búsqueda.send_keys (claves.REGRESO)

Con el código anterior, no tenemos que hacer clic en el botón de búsqueda. Funciona como lo haría cuando presionamos la tecla Intro después de ingresar los valores de búsqueda.

Este método de hacer clic en buttosn no solo funciona con botones, también funciona con enlaces.

Tomando capturas de pantalla

Lo leíste bien! Puede tomar capturas de pantalla con selenio y es tan fácil como en las secciones anteriores.

Lo que haremos es llamar al guardar captura de pantalla en el objeto del controlador, luego pasaríamos el nombre de la imagen y se tomaría la captura de pantalla.

>>> conductor.save_screenshot ("Planeta-tierra.png ")

Asegúrese de que el nombre de la imagen tenga un .extensión png, de lo contrario, podría terminar con una imagen dañada.

Cuando haya terminado con las operaciones, puede cerrar el navegador ejecutando el siguiente código:

>>> conductor.cerca()

Conclusión

El selenio es conocido como una herramienta muy poderosa, y poder usarlo se considera una habilidad vital para los probadores de automatización. El selenio puede hacer mucho más de lo que se explica en este artículo, los movimientos del teclado se pueden reproducir como se muestra con Llaves.REGRESO. Si desea obtener más información sobre el selenio, puede consultar su documentación, es bastante claro y fácil de usar.

Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....
Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...