SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
Selenium + Java
©2023 Mario La Menza Perelló (mario.lm2a.com)
¿Por qué Selenium?
Limitaciones de Selenium
•Solo soporta testing de sólo aplicaciones web
•Las aplicaciones móviles no pueden ser
automatizadas
•Los captcha no pueden ser automatizados
•No hay un “soporte” por parte de los creadores
•El usuario debe saber programar de antemano
•Es gratis
•Tiene una gran cantidad de foros y comunidades activas
•Compatibilidad con muchos browsers (Firefox, Chrome, I.E.)
•Compatibilidad con Sistemas Operativos (Windows, Mac, Linux, etc)
•Soporta múltiples lenguajes de programación (Java, Ruby, C#, Python, etc)
©2023 Mario La Menza Perelló (mario.lm2a.com)
WebDriver
©2023 Mario La Menza Perelló (mario.lm2a.com)
Arquitectura del WebDriver de Selenium
©2023 Mario La Menza Perelló (mario.lm2a.com)
Crear un WebDriver para Java
HTMLUnit
Firefox
Chrome
©2023 Mario La Menza Perelló (mario.lm2a.com)
Mas browsers
©2023 Mario La Menza Perelló (mario.lm2a.com)
Métodos de webdriver
©2023 Mario La Menza Perelló (mario.lm2a.com)
WebDriver comandos Get
©2023 Mario La Menza Perelló (mario.lm2a.com)
get(String): void
Abre una URL. Debe incluir el protocolo http de lo contrario tira una
Excepcion
Ejemplo:
driver.get(https://www.google.com);
©2023 Mario La Menza Perelló (mario.lm2a.com)
getCurrentUrl(): String
Devuelve la URL de la pagina actualmente cargada.
Ejemplo
String currentUrl = driver.getCurrentUrl();
©2023 Mario La Menza Perelló (mario.lm2a.com)
getTitle: String
Devuelve el titulo de la pagina actual
Ejemplo:
String title = driver.getTitle();
©2023 Mario La Menza Perelló (mario.lm2a.com)
getPageSource(): String
Devuelve el código fuente de la pagina actual.
Ejemplo:
String pageSource = driver.getPageSource();
©2023 Mario La Menza Perelló (mario.lm2a.com)
getText(): String
Devuelve el texto del elemento al que se aplica
Ejemplo:
String text = driver.findElement(By.id("India")).getText();
©2023 Mario La Menza Perelló (mario.lm2a.com)
getTagName(): String
Obtiene el Tag de un elemento obtenido con un método:
findElement(By)
Ejemplo:
WebElement element = driver.findElement(By.id("DownloadButton"));
String tagName = element.getTagName();
System.out.println(tagName);
©2023 Mario La Menza Perelló (mario.lm2a.com)
getCssValue(): String
Obtiene la clase de estilo que tenga asociado un elemento
Ejemplo:
element.getCssValue();
©2023 Mario La Menza Perelló (mario.lm2a.com)
getAttribute(String name): String
Devuelve un atributo dado de un elemento
Ejemplo:
WebElement element = driver.findElement(By.id("DownloadButton"));
//Esto devuelve"DownloadButton".
String attributeValue = element.getAttribute("id");
System.out.println(attributeValue);
©2023 Mario La Menza Perelló (mario.lm2a.com)
getSize(): int
Devuelve la medida de un elemento
Ejemplo:
WebElement element = driver.findElement(By.id("DownloadButton"));
Dimension elementSize = element.getSize();
System.out.println(“Height :” + elementSize.height + ”Width : "+
elementSize.width);
©2023 Mario La Menza Perelló (mario.lm2a.com)
close():void
Cierra la ventana del navegador que esta controlando actualmente el
web driver
Ejemplo:
driver.close();
©2023 Mario La Menza Perelló (mario.lm2a.com)
quit(): void
Cierra todas las ventanas abiertas por el web driver
Ejemplo:
driver.quit();
©2023 Mario La Menza Perelló (mario.lm2a.com)
Ejemplo
©2023 Mario La Menza Perelló (mario.lm2a.com)
Localizar elementos
Con Java en Selenium
©2023 Mario La Menza Perelló (mario.lm2a.com)
Formas de localizar elementos de una pagina
©2023 Mario La Menza Perelló (mario.lm2a.com)
X Atributo
<input type="text" id="fistname" name="first_name" class="myForm">
Forma genérica:
css = element_name[<attribute_name>='<value>’]
WebElement firstName = driver.findElement(By.cssSelector("input[name='first_name']"));
©2023 Mario La Menza Perelló (mario.lm2a.com)
X Atributo Id
driver.findElement(By.cssSelector("input#firstname"));
//o alternativamente
driver.findElement(By.cssSelector("#firstname"));
©2023 Mario La Menza Perelló (mario.lm2a.com)
Metodos WebElement
©2023 Mario La Menza Perelló (mario.lm2a.com)
Operaciones básicas
©2023 Mario La Menza Perelló (mario.lm2a.com)
Métodos
©2023 Mario La Menza Perelló (mario.lm2a.com)
Navegacion
©2023 Mario La Menza Perelló (mario.lm2a.com)
navigate(Object o) : Navigation
• Proporciona los siguientes métodos:
©2023 Mario La Menza Perelló (mario.lm2a.com)
to(String arg) : void
Este método se utiliza para navegar a una URL desde la ventana actual
del navegador.
Atencion: Simplemente navegará a la página web pero no esperará
hasta que se cargue toda la página.
Ejemplo:
driver.navigate().to(http://www.scientecheasy.com);
©2023 Mario La Menza Perelló (mario.lm2a.com)
Get VS
driver.get() driver.navigate().to()
1. El método driver.get() se usa para
abrir una URL específica de la
aplicación web y esperar hasta que se
cargue toda la página.
1. El método driver.navigate().to() se
utiliza para navegar por una URL
específica de la aplicación web y no
espera hasta que se carga toda la
página.
2. No mantiene el historial de
navegación y cookies.
2. Mantiene el historial de navegación y
las cookies.
3. No podemos avanzar o retroceder
entre las páginas usando el driver.get().
3. Podemos navegar fácilmente entre
las páginas hacia adelante, hacia atrás y
actualizar usando driver.navigate().
©2023 Mario La Menza Perelló (mario.lm2a.com)
forward() : void
Va hacia adelante en el history del navegador
Ejemplo:
driver.navigate().forward();
©2023 Mario La Menza Perelló (mario.lm2a.com)
back() : void
Va hacia atras en el history del navegador
Ejemplo:
driver.navigate().back();
©2023 Mario La Menza Perelló (mario.lm2a.com)
refresh() : void
Equivale a apretar F5, recarga la pagina actual
Ejemplo:
driver.navigate().refresh();
©2023 Mario La Menza Perelló (mario.lm2a.com)
Ejemplo
• Inicie el navegador Chrome
• Navegue a la URL: https://www.google.com
• Espere a que la página se cargue por completo.
• Haz clic en el texto del enlace de Gmail.
• Obtener el título de la página web actual.
• Obtenga la longitud del título de la página web actual.
• Vuelva a la página de inicio con el comando Atrás.
• Obtenga el título de la contraportada.
• Obtener la longitud del título de la contraportada.
• Nuevamente regrese a la página anterior usando el comando de avance.
• Obtenga el título y la longitud del título de la página anterior.
• Ahora actualice la página web usando el comando de actualización.
• Cierra el navegador.
©2023 Mario La Menza Perelló (mario.lm2a.com)
Demo
©2023 Mario La Menza Perelló (mario.lm2a.com)
Descargar libreria
©2023 Mario La Menza Perelló (mario.lm2a.com)
Descargar el Driver
©2023 Mario La Menza Perelló (mario.lm2a.com)
Crear proyecto en Eclipse
• Ver Eclipse
• Proyecto Eclipse
• Proyecto Maven
©2023 Mario La Menza Perelló (mario.lm2a.com)
Agregar la librería al build path
©2023 Mario La Menza Perelló (mario.lm2a.com)
Configurar el driver en la clase Java
©2023 Mario La Menza Perelló (mario.lm2a.com)
Agregar código para acceder a algo
©2023 Mario La Menza Perelló (mario.lm2a.com)
Otro ejemplo
©2023 Mario La Menza Perelló (mario.lm2a.com)
Codigo
©2023 Mario La Menza Perelló (mario.lm2a.com)

Más contenido relacionado

Similar a Selenium.pdf

Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Maximiliano Firtman
 
Introduccion a j query
Introduccion a j queryIntroduccion a j query
Introduccion a j queryPablo Viteri
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiGuillermo Nassi
 
Trabajo práctico n 6
Trabajo práctico n 6Trabajo práctico n 6
Trabajo práctico n 6julicossio
 
Dn13 u3 6_lswa
Dn13 u3 6_lswaDn13 u3 6_lswa
Dn13 u3 6_lswawendatgo
 
Dn13 u3 6_lswa
Dn13 u3 6_lswaDn13 u3 6_lswa
Dn13 u3 6_lswawendatgo
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicMicael Gallego
 
Tutorial de dreamweaver
Tutorial de dreamweaverTutorial de dreamweaver
Tutorial de dreamweaverArmandoC42
 
Introducción a web matrix
Introducción a web matrixIntroducción a web matrix
Introducción a web matrixMICTT Palma
 
Navegar por internet
Navegar por internetNavegar por internet
Navegar por internetjavier muñoz
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Ricard Luquero
 
Jquery
JqueryJquery
JqueryOscar
 
Adrián Garrido - WPO para WordPress.pptx
Adrián Garrido - WPO para WordPress.pptxAdrián Garrido - WPO para WordPress.pptx
Adrián Garrido - WPO para WordPress.pptxAdrián Garrido
 
Awa12 anahi santiago
Awa12 anahi santiagoAwa12 anahi santiago
Awa12 anahi santiagoAnahiSantiago
 
Programación en ambiente web - Semana 2.pptx
Programación en ambiente web - Semana 2.pptxProgramación en ambiente web - Semana 2.pptx
Programación en ambiente web - Semana 2.pptxNoraDenisseOcampo1
 
Javascript y Jquery.pptx
Javascript y Jquery.pptxJavascript y Jquery.pptx
Javascript y Jquery.pptxJuanLopez169185
 

Similar a Selenium.pdf (20)

Ebook tutorialspringbootheroku
Ebook tutorialspringbootherokuEbook tutorialspringbootheroku
Ebook tutorialspringbootheroku
 
Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020
 
Diseño web
Diseño webDiseño web
Diseño web
 
Introduccion a j query
Introduccion a j queryIntroduccion a j query
Introduccion a j query
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
 
Trabajo práctico n 6
Trabajo práctico n 6Trabajo práctico n 6
Trabajo práctico n 6
 
Dn13 u3 6_lswa
Dn13 u3 6_lswaDn13 u3 6_lswa
Dn13 u3 6_lswa
 
Dn13 u3 6_lswa
Dn13 u3 6_lswaDn13 u3 6_lswa
Dn13 u3 6_lswa
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
 
Tutorial de dreamweaver
Tutorial de dreamweaverTutorial de dreamweaver
Tutorial de dreamweaver
 
Introducción a web matrix
Introducción a web matrixIntroducción a web matrix
Introducción a web matrix
 
Navegar por internet
Navegar por internetNavegar por internet
Navegar por internet
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Jquery
JqueryJquery
Jquery
 
Adrián Garrido - WPO para WordPress.pptx
Adrián Garrido - WPO para WordPress.pptxAdrián Garrido - WPO para WordPress.pptx
Adrián Garrido - WPO para WordPress.pptx
 
Html5
Html5Html5
Html5
 
Awa12 anahi santiago
Awa12 anahi santiagoAwa12 anahi santiago
Awa12 anahi santiago
 
Programación en ambiente web - Semana 2.pptx
Programación en ambiente web - Semana 2.pptxProgramación en ambiente web - Semana 2.pptx
Programación en ambiente web - Semana 2.pptx
 
Javascript y Jquery.pptx
Javascript y Jquery.pptxJavascript y Jquery.pptx
Javascript y Jquery.pptx
 

Selenium.pdf

  • 1. Selenium + Java ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 2. ¿Por qué Selenium? Limitaciones de Selenium •Solo soporta testing de sólo aplicaciones web •Las aplicaciones móviles no pueden ser automatizadas •Los captcha no pueden ser automatizados •No hay un “soporte” por parte de los creadores •El usuario debe saber programar de antemano •Es gratis •Tiene una gran cantidad de foros y comunidades activas •Compatibilidad con muchos browsers (Firefox, Chrome, I.E.) •Compatibilidad con Sistemas Operativos (Windows, Mac, Linux, etc) •Soporta múltiples lenguajes de programación (Java, Ruby, C#, Python, etc) ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 3. WebDriver ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 4. Arquitectura del WebDriver de Selenium ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 5. Crear un WebDriver para Java HTMLUnit Firefox Chrome ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 6. Mas browsers ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 7. Métodos de webdriver ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 8. WebDriver comandos Get ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 9. get(String): void Abre una URL. Debe incluir el protocolo http de lo contrario tira una Excepcion Ejemplo: driver.get(https://www.google.com); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 10. getCurrentUrl(): String Devuelve la URL de la pagina actualmente cargada. Ejemplo String currentUrl = driver.getCurrentUrl(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 11. getTitle: String Devuelve el titulo de la pagina actual Ejemplo: String title = driver.getTitle(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 12. getPageSource(): String Devuelve el código fuente de la pagina actual. Ejemplo: String pageSource = driver.getPageSource(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 13. getText(): String Devuelve el texto del elemento al que se aplica Ejemplo: String text = driver.findElement(By.id("India")).getText(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 14. getTagName(): String Obtiene el Tag de un elemento obtenido con un método: findElement(By) Ejemplo: WebElement element = driver.findElement(By.id("DownloadButton")); String tagName = element.getTagName(); System.out.println(tagName); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 15. getCssValue(): String Obtiene la clase de estilo que tenga asociado un elemento Ejemplo: element.getCssValue(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 16. getAttribute(String name): String Devuelve un atributo dado de un elemento Ejemplo: WebElement element = driver.findElement(By.id("DownloadButton")); //Esto devuelve"DownloadButton". String attributeValue = element.getAttribute("id"); System.out.println(attributeValue); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 17. getSize(): int Devuelve la medida de un elemento Ejemplo: WebElement element = driver.findElement(By.id("DownloadButton")); Dimension elementSize = element.getSize(); System.out.println(“Height :” + elementSize.height + ”Width : "+ elementSize.width); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 18. close():void Cierra la ventana del navegador que esta controlando actualmente el web driver Ejemplo: driver.close(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 19. quit(): void Cierra todas las ventanas abiertas por el web driver Ejemplo: driver.quit(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 20. Ejemplo ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 21. Localizar elementos Con Java en Selenium ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 22. Formas de localizar elementos de una pagina ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 23. X Atributo <input type="text" id="fistname" name="first_name" class="myForm"> Forma genérica: css = element_name[<attribute_name>='<value>’] WebElement firstName = driver.findElement(By.cssSelector("input[name='first_name']")); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 24. X Atributo Id driver.findElement(By.cssSelector("input#firstname")); //o alternativamente driver.findElement(By.cssSelector("#firstname")); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 25. Metodos WebElement ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 26. Operaciones básicas ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 27. Métodos ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 28. Navegacion ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 29. navigate(Object o) : Navigation • Proporciona los siguientes métodos: ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 30. to(String arg) : void Este método se utiliza para navegar a una URL desde la ventana actual del navegador. Atencion: Simplemente navegará a la página web pero no esperará hasta que se cargue toda la página. Ejemplo: driver.navigate().to(http://www.scientecheasy.com); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 31. Get VS driver.get() driver.navigate().to() 1. El método driver.get() se usa para abrir una URL específica de la aplicación web y esperar hasta que se cargue toda la página. 1. El método driver.navigate().to() se utiliza para navegar por una URL específica de la aplicación web y no espera hasta que se carga toda la página. 2. No mantiene el historial de navegación y cookies. 2. Mantiene el historial de navegación y las cookies. 3. No podemos avanzar o retroceder entre las páginas usando el driver.get(). 3. Podemos navegar fácilmente entre las páginas hacia adelante, hacia atrás y actualizar usando driver.navigate(). ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 32. forward() : void Va hacia adelante en el history del navegador Ejemplo: driver.navigate().forward(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 33. back() : void Va hacia atras en el history del navegador Ejemplo: driver.navigate().back(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 34. refresh() : void Equivale a apretar F5, recarga la pagina actual Ejemplo: driver.navigate().refresh(); ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 35. Ejemplo • Inicie el navegador Chrome • Navegue a la URL: https://www.google.com • Espere a que la página se cargue por completo. • Haz clic en el texto del enlace de Gmail. • Obtener el título de la página web actual. • Obtenga la longitud del título de la página web actual. • Vuelva a la página de inicio con el comando Atrás. • Obtenga el título de la contraportada. • Obtener la longitud del título de la contraportada. • Nuevamente regrese a la página anterior usando el comando de avance. • Obtenga el título y la longitud del título de la página anterior. • Ahora actualice la página web usando el comando de actualización. • Cierra el navegador. ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 36. Demo ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 37. Descargar libreria ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 38. Descargar el Driver ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 39. Crear proyecto en Eclipse • Ver Eclipse • Proyecto Eclipse • Proyecto Maven ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 40. Agregar la librería al build path ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 41. Configurar el driver en la clase Java ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 42. Agregar código para acceder a algo ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 43. Otro ejemplo ©2023 Mario La Menza Perelló (mario.lm2a.com)
  • 44. Codigo ©2023 Mario La Menza Perelló (mario.lm2a.com)