El paquete de herramientas Selenium consta de:
- Selenium Core, el núcleo que contiene la funcionalidad básica (API),
- Selenium IDE, el entorno de desarrollo,
- Selenium WebDriver, una herramienta que puede automatizar cualquier acción que tenga lugar en un navegador web,
- Selenium Grid, una extensión de WebDriver para la ejecución de pruebas en paralelo.
WebDriver
Selenium WebDriver se opera escribiendo código en un lenguaje de programación, como Java
, C #
, .Net
, JavaScript
(Node), PHP
, Ruby
, Python
o Perl
, por tanto, se requiere de competencia en programación para crear un script de prueba para WebDriver.
Selenium es uno de los frameworks más usados por las siguientes razones:
- Puede ejecutar casos en diferentes navegadores,
- Soporta varios sistemas operativos,
- Soporta dispositivos móviles,
- Puede ejecutar casos mientras el navegador está minimizado,
- Puede ejecutar casos en paralelo.
Con WebDriver no podemos probar ninguna aplicación móvil o de escritorio, pero existe [ChromeDriver](https://sites.google.com/chromium.org/driver/home) que está disponible para Chrome de Android y Chrome en el escritorio.
:gem:
WebDriver no es apto para todos los casos o contenidos web. WebDriver no puede probar o registrar:
- Captchas,
- Descarga de archivos,
- Iniciar sesión en los servicios de terceros,
- Códigos de respuesta HTTP (tiene problemas para tratar con códigos de estado HTTP),
- Pruebas de rendimiento (no está diseñado para eso).
Instalar Selenium
Hay varios clientes y bibliotecas disponibles para usar Selenium WebDriver, denominados en su conjunto language bindings
según el lenguaje que se vaya utilizar; nosotros usaremos Python, por tanto, instalaremos el language bindings para Python
.
python3 -m pip install selenium
Selenium Manager
ChromeDriver es el software que permite a Selenium controlar el navegador Chrome.
Para cada versión de Chrome debemos instalar la versión correspondiente de ChromeDriver. Sin embargo, ahora es normal que el navegador (Chrome/Firefox/Edge) se actualice cada 4 a 6 semanas, por lo que mantener el controlador actualizado no es una tarea fácil; y a veces imposible, al no tener todavía un controlador disponible.
selenium....>mmon....>ceptions....>ssionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 114....>
Selenium Manager configurará los controladores del navegador para Chrome, Firefox y Edge si no están presentes en el archivo PATH
Deshabilitar el servicio de actualizaciones de Google
- Pulse Windows + R, escriba
msconfig
y ejecute el comando, pulsando Enter. - En la pestaña de
Servicios
, desmarcamosServicios de Google Update (gupdate)
yServicios de Google (gupdatem)
. - Por último, pulsamos en Aplicar y Aceptar para guardar los cambios.
- Una vez reiniciemos nuestro PC los cambios surtirán efecto.
Instalar ChromeDriver
- Descarga chromedriver
- Mueve ChromeDriver a algún lugar sensato donde Python y Selenium puedan encontrarlo:
- a
C:\Windows
, - o a la carpeta
/usr/local/bin
.
- a
mv chromedriver /usr/local/bin
**Otras fuentes:**
[www.selenium.dev](https://www.selenium.dev/documentation/getting_started/installing_browser_drivers/)
, [sites.google.com](https://sites.google.com/a/chromium.org/chromedriver/downloads)
...No module named 'selenium'
Pruebe con python3 -m pip install selenium
...No se puede iniciar el navegador Chrome
Debe ir a la carpeta donde tiene el chromeDriver y abrirlo. Después de este paso, vuelva a ejecutar sus scripts con normalidad.
Administrador de unidades web
Puede usar automáticamente el controlador de cromo correcto mediante el administrador de unidades web.
- Instale el administrador de unidades web:
pip install webdriver-manager
- Luego use el controlador en python de la siguiente manera:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
Instalar otras librerias
python3 -m pip install numpy
python3 -m pip install By
python3 -m pip install requests
Programación
Se puede referenciar a objetos DOM: nombre, ID o con XPath.
Métodos
- driver“nombre-clase”>_by_class_name("nombre-clase") Para tomar un solo primer elemento
by_id, by_name, by_xpath, by_link_text, by_partial_link_text, by_tag_name, by_class_name, by_css_selector
Para pruebas
- Se puede integrar con herramientas como TestNG y JUnit para gestionar casos de prueba y generar informes.
- Se puede integrar con Maven, Jenkins y Docker para lograr pruebas continuas.