style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Primeros pasos con Selenium I

Hola :

Esta es la primera entrada de lo que pienso podría ser una librería que en algún momento le podría servir a alguien, he estado pensando en una forma en la cual poder ayudar con la configuración un poco más ordenada de lo que es la automatización de pruebas, obviamente existen muchas maneras de realizar test y en algún momento estaré pensando en publicar todas o la mayoría de herramientas que nos permitan realizar estas tareas de alguna mejor forma, así que esta primera entrada tratara de las automatizaciones de pruebas front-end por medio de Selenium WebDriver.
También empezaré a escribir sobre postman y algunas cosas que he tenido que aprender (no soy perfil tester, pero me interesan este tipo de pruebas)
La solución que se va a desarrollar en futuros posts me ha servido, y tal vez alguien pueda modificarla o aprovecharla para su beneficio y adaptarla a sus propias necesidades esto es lo bonito de la POO, pero antes de picar código, se debe de empezar con la teoría :) animo !

Selenium es una herramienta open source para automatización de tareas dentro de los navegadores web, esto es par la automatización de aplicaciones web, selenium puede trabajar con alguno de estos lenguajes de programación:

  • Java
  • Python
  • C#
  • PHP
  • Ruby
  • Perl
  • Net

De sistemas operativos, podemos programarlos para cualquiera de los 3 más conocidos : Windows, Linux y Mac, además de cualquier navegador de estos:

  • Mozila Firefox
  • Internet Explorer
  • Google Chrome
  • Safari
  • Opera

Selenium contiene una suite de herramientas, las cuales están compuestas por:

  • Selenium ID
  • Selenium Grid
  • Selenium WebDriver

Para este ejercicio, nos enfocaremos en selenium Web Driver, en mi caso, me ha tocado realizar test para IE, Chrome y Firefox (buscando compatibilidad de estos navegadores) pero cada quien es libre de realizar las pruebas en el navegador que consideren necesario o en el que el requerimiento asi lo pida.

En el caso de estos posts, la integración de las pruebas se realizara con TestNG y Maven (no esta cerrado a estas herramienta)

Empecemos entendiendo simple ciclo de vida de una prueba

Prueba automatizada -> ejecución y validación de resultados -> generación de reportes

Simple no?

El ejemplo se ha realizado con los siguientes elementos:

  • JDK 1.8.0_161
  • STS 3.9.6.RELEASE
  • Apache Maven 3.5.4
  • S.O Windows 7 *También se ha probado en MAC OS :)*
  • ChromeDriver 74.0.3729.6

En esta primera entrada, solamente crearemos un simple proyecto para validar que la configuración sea correcta, obviamente el modelo de nuestra librería evolucionará a un modelo más robusto y entendible, para esto solamente buscaremos en chrome la palabra clave javamexico
Dentro de eclipse, solamente tendremos que agregar el plugin de Testng

Configuracion de chromewebdriver

En este caso, vamos a realizar la automatización de pruebas por chrome, por lo que necesitamos descargar el webdriver de chrome, esto debe de realizarse en base a la versión de chrome que tengamos instalada, el driver lo podemos encontrar en esta url:

http://chromedriver.chromium.org/downloads

En mi caso, descargaré la versión para chrome 74

Ahora la vamos a descomprimir y dejar en un lugar fijo, a mi me gusta dejarlo en C: //

Es recomendable agregar el plugin de test ng para eclipse, (aunque en este primer ejercicio no lo vamos a utilizar), por lo que dentro de eclipse solamente basta con realizar una búsqueda en el market-place y agregarlo (en mi caso, al ser un equipo de trabajo, no tengo habilitadas varias cosas por lo que tuve que realizar la integración de manera manual que es como se muestra a continuación (si es tu caso esto te servira: https://www.techbeamers.com/install-testng-in-eclipse-ide/#method3 ) mas adelante veremos esto mas a detalle

Para que el programa de automatización funcione, es necesario indicarle (mediante una propiedad de Sistema) la ubicación y el tipo de driver, se inicializa el driver, se realizan las acciones necesarias , se finaliza la ejecución y se “Cierra” el driver, asi que ahora si después de tanta teoria, veamos el código:

Primero crearemos un Proyecto maven, crearemos un simple Proyecto y establecemos el group id y el artifact id y finalizamos:

En nuestro archivo pom, agregaremos la dependencia de selenium:

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium.version}</version>
        </dependency>

Unas cuantas propiedades:

<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <selenium.version>3.14.0</selenium.version>
    </properties>

De cualquier manera, aqui encontraran el repositorio con el proyecto : https://bitbucket.org/orochimaru16/hello-world-selenium/src/master/

Ahora empezemos a crear una simple clase con el metodo main para mandar a ejecutar directamente:

public static void main(String[] args) throws InterruptedException {
               
                System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");
               
                WebDriver driver = new ChromeDriver();
                driver.manage().window().maximize();
                driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
                driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                driver.get("https://www.google.com/");
                driver.findElement(By.xpath("//input[@type='text']")).sendKeys("javamexico");
                driver.findElement(By.xpath("//*[@id=\"tsf\"]/div[2]/div/div[2]/div[2]/div/center/input[1]")).click();
                Thread.sleep(5000);
                driver.quit();
        }

Veamos el código mas a detalle:

Después de crear la clase, lo primero es establecer el path y el tipo de driver, en mi caso se encuentra en C:\chromedriver_win32\chromedriver.exe, establecemos estos datos para que funcione el driver

System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");

Creamos una instancia de la clase webdriver:

WebDriver driver = new ChromeDriver();

Ahora establecemos que al iniciar la ejecución, la ventana se maximize, además de establecer tiempos de espera máximo para que una determinada pagina se cargue correctamente y el otro tiempo es para esperar la aparición de los elementos de la pagina, como un botón o un cuadro de texto:

    driver.manage().window().maximize();
    driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Establecemos la url donde vamos a dirigirnos (haremos una simple búsqueda): www.google.com/

driver.get("https://www.google.com/");

Y realizamos la búsqueda del element text de busqueda y le decimos que mande una simple string para realizar la búsqueda , en mi caso buscaremos por la palabra clave javamexico y damos click:

                driver.findElement(By.xpath("//input[@type='text']")).sendKeys("javamexico");
                driver.findElement(By.xpath("//*[@id=\"tsf\"]/div[2]/div/div[2]/div[2]/div/center/input[1]")).click();

Para este ejemplo realizamos la búsqueda por xpath (mas adelante veremos los tipos de búsqueda que podemos realizar con selenium)

Finalmente he establecido una pausa para poder ver la ejecucion previo a que el navegador se cierre.

    Thread.sleep(5000);
    driver.quit();

Aqui les comparto las pantallas obtenidas (notese el mensaje de selenium diciendo que el navegador esta siendo controlado por un software de pruebas automatizadas

En los siguientes posts, estare abarcando los tipos de búsqueda, configuración, patrón page object y el modelo loadable component y varias cosas interesantes :)

Saludos !!

https://www.seleniumhq.org/

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">