Si eres un probador manual
Quien quiere aprender Selenium (y Java).
y no sabe nada de programación,
- ¿Cuáles son las mejores maneras posibles de memorizar gran conjunto de vocabulario?
- ¿Qué debo saber si quisiera aprender sobre la herrería?
- ¿Cuál es la manera más sistemática de aprender CAD desde el nivel principiante hasta el nivel avanzado?
- ¿Cuál es la habilidad gráfica más lucrativa para aprender?
- ¿Qué es lo opuesto al aprendizaje autodirigido?
Estas son tus PRIMERAS 100 COSAS PARA APRENDER.
Por favor, considere lo que sigue a una lista de verificación dirigida a guiar su aprendizaje, nada más.
————————————————————————-
JAVA
————————————————————————-
- instalar Java
- instalar Eclipse
- cree un proyecto simple e independiente en Eclipse que muestre HELLO WORLD!
clase pública TestClass {
public static void main (String [] args) {
System.out.println (“¡HOLA MUNDO!”);
}
}
4. crea variables con tipos int, String, char, boolean, double
numero int
doble precio;
boolean isValid;
personaje char
Texto de la cadena;
5. Asignar valores a las variables.
número = 10;
precio = 45.22;
isValid = false;
carácter = ‘a’;
text = “este es un texto de muestra”;
6. usar operadores numéricos (+, -, *, /)
int número1 = 10, número2 = 20, número3 = 0, número4 = 0, número5 = 0;
número3 = número1 + número2;
número3 = número1 * número2;
número4 = número2 – número1;
número5 = número2 / número1;
7. crear condiciones usando condicionales (>,> =, <, <=, ==) y operadores lógicos (y, o, no)
int número1 = 10;
boolean isPositive = (número1> 0);
booleano isNegative = (número 1 <0);
boolean isZero = (número1 == 0);
boolean isPositiveAndGreaterThan5 = (número1> 0) && (número1> 5);
boolean isBetween5And15 = (número1> = 5) && (número1 <= 15);
8. use si / else para ejecutar código basado en resultados de condiciones
int número1 = 10;
si (numero1 <0)
System.out.println (“number1 is negative.”);
más
si (numero 1 == 0)
System.out.println (“number1 is 0.”);
más
System.out.println (“number1 is positive /”);
9. usa el interruptor para ejecutar código basado en los valores de una variable
int número1 = 10;
interruptor (número 1) {
caso 1:
System.out.println (“número es uno.”);
descanso;
caso 2:
System.out.println (“el número es dos.”);
descanso;
caso 3:
System.out.println (“el número es tres.”);
descanso;
defecto:
System.out.println (“el número es mayor que 3.”);
descanso;
}
10. Usa los métodos de cuerdas.
String text = “este es un texto de muestra”;
int length = text.length ();
int position = text.indexOf (“is”);
Cadena text1 = text.substring (5);
11. usar clases de propósito común de la API de Java; importar los paquetes de estas clases usando la declaración de importación
import java.io.File;
clase pública clase 1 {
public static void main (String [] args) {
Archivo de archivo = archivo nuevo (“c: \\ temp \\ files \\ file1.txt”);
boolean fileExists = file.exists ();
si (fileExists == false)
System.out.println (“el archivo no existe”);
long fileSize = file.length ();
System.out.println (“\ nfile length =” + fileSize);
String fileParent = file.getParent ();
System.out.println (“file parent =” + fileParent);
boolean isFileHidden = file.isHidden ();
System.out.println (“is file hidden?” + IsFileHidden);
}
}
12. crea un paquete para tu clase
paquete com.java;
clase pública TestClass {
public static void main (String [] args) {
System.out.println (“Hello Package!”);
}
}
13. usar matrices
- inicializar la matriz
- Obtener valores de elementos de matriz
- Guardar valores en los elementos de la matriz.
- obtener el tamaño de la matriz
public static void main (String [] args) {
int [] numbers = new int [] {1, 4, -3, 0};
System.out.println (numbers.length);
números [2] = 5;
System.out.println (números [2]);
}
14. usar listas
- añadir elementos a la lista
- eliminar elementos de la lista
- encontrar un elemento en la lista
- obtener el tamaño de la lista
paquete com.java;
import java.util.ArrayList;
clase pública TestClass {
public static void main (String [] args) {
ArrayList texts = new ArrayList ();
System.out.println (texts.size ());
texts.add (“aaa”);
texts.add (“bbb”);
texts.add (“ccc”);
System.out.println (texts.get (1));
texts.remove (1);
System.out.println (texts.size ());
}
}
15. use las instrucciones de bucle (FOR, WHILE, DO WHILE) para revisar los elementos de una matriz o lista
paquete com.java;
import java.util.ArrayList;
clase pública TestClass {
public static void main (String [] args) {
int [] numbers = new int [] {1, 3, 2, 0};
para (int i = 0; i <numbers.length; i ++)
System.out.println (números [i]);
ArrayList texts = new ArrayList ();
texts.add (“aaa”);
texts.add (“bbb”);
texts.add (“ccc”);
para (int i = 0; i <texts.size (); i ++)
System.out.println (texts.get (i));
}
}
16. crear una clase
paquete com.java;
clase pública libro
Nombre de cadena privado = “”;
autor de la secuencia privada = “”;
Libro público (nombre de la cadena, autor de la cadena) {
this.name = nombre;
this.author = autor;
}
Cadena pública getName () {
devuelve this.name;
}
Cadena pública getAuthor () {
devuelve esto.
}
impresión pública vacía () {
System.out.println (this.name + “,” + this.author);
}
}
17. crear objetos de una clase
paquete com.java;
import java.util.ArrayList;
clase pública TestClass {
public static void main (String [] args) {
Libro b = libro nuevo (“Alicia en el país de las maravillas”, “Lewis Caroll”);
b.print ();
}
}
18. trabajar con excepciones
- excepciones de captura
- lanzar excepciones
int n1 = 20, n2 = 0;
tratar {
n2 = n1 / 0;
}
captura (Excepción e)
System.out.println (“no se puede dividir por 0.”);
}
si (n1 == 0)
lanzar la nueva excepción RuntimeException (“n1 no puede ser 0”);
19. aprender la herencia de clase
clase pública animal {
movimiento vacío público () {
System.out.println (“Los animales pueden moverse”);
}
}
Clase pública Perro extiende Animal {
ladrido del vacío público () {
System.out.println (“Los perros pueden ladrar”);
}
}
clase pública TestDog {
Vacío estático público principal (cadena args []) {
Perro perro = Perro nuevo ();
dog.move ();
ladrido de perro();
}
}
20. Aprender la sobrecarga de métodos.
clase pública suma {
public int add (int a, int b) {
devuelve a + b;
}
public int add (int a, int b, int c) {
devuelve a + b + c;
}
}
clase TestOverloading {
public static void main (String [] args) {
Suma suma = nueva Suma ();
System.out.println (sum.add (11,11));
System.out.println (sum.add (11,11,11));
}
21. método de anulación
clase pública animal {
movimiento vacío público () {
System.out.println (“Los animales pueden moverse”);
}
}
Clase pública Perro extiende Animal {
movimiento vacío público () {
System.out.println (“Los perros pueden caminar y correr”);
}
}
clase pública TestDog {
Vacío estático público principal (cadena args []) {
Animal a = nuevo Animal ();
Animal b = perro nuevo ();
un movimiento();
b.move ();
}
}
22. clases abstractas
Las clases abstractas son clases que no pueden ser instanciadas (no pueden crear objetos para ellas).
Deben ser utilizados como clases para los padres para otras clases.
clase abstracta pública bici {
public abstract void run ();
}
clase pública Honda4 extiende Bike {
void run () {
System.out.println (“se ejecuta de forma segura ..”);
}
}
Vacío estático público principal (cadena args []) {
Bicicleta de bicicleta = nueva Honda4 ();
bike.run ();
}
23. interfaces
Controlador WebDriver = nuevo FirefoxDriver ();
Controlador WebDriver = nuevo ChromeDriver ();
WebDriver es una interfaz implementada por las clases FirefoxDriver y ChromeDriver.
24. Usa la composición en lugar de la herencia.
25. leer datos de archivos de texto (csv, xm, yaml)
26. genéricos
List list = new ArrayList ();
27. registrar excepciones y errores usando log4J
28. trabajar con valores de fecha y hora usando las clases LocalDate y LocalTime
——————————————————————————————-
NAVEGADOR RELACIONADO
——————————————————————————————
29. resumen rápido de HTML
- Etiquetas HTML
- Atributos HTML
- Valores HTML
- Tipos de elementos HTML
30. resumen rápido de las reglas CSS
pag {
color rojo;
text-align: center;
}
31. resumen rápido de Javascript
- buscar elemento por id, nombre de clase y nombre
document.getElementById (“id123”)
document.getElementsByClassName (“form-submit”)
document.getElementsByName (“search”)
32. ¿cuál es el navegador DOM ?
33. utilizar inspectores del navegador para inspeccionar la información HTML de los elementos
- Inspector de cromo
- Firebug / Firepath
34. crear localizadores XPATH para elementos web; pruébalos en los inspectores del navegador
// div [@testid = ‘abc’]
// span [@ class = ‘price’]
35. crear localizadores CSS para elementos web; pruébalos en los inspectores del navegador
a [href ^ = “https”]
[título ~ = flor]
—————————————————————————————-
Probando
—————————————————————————————-
36. agregar la librería TESTNG al proyecto
- clic derecho sobre el nombre del proyecto
- seleccione Propiedades
- haga clic en Java Build Path
- haga clic en bibliotecas
- haga clic en Agregar biblioteca
- seleccione TESTNG
- salvar
37. usar las pruebas unitarias TESTNG
@Prueba
búsqueda de pruebas de vacío público () {
driver.get (siteUrl);
……………… ..
……………… ..
}
38. utilizar accesorios TESTNG
Controlador WebDriver;
@BeforeMethod
configuración de vacío público () {
driver = new FirefoxDriver ();
}
@AfterMethod
vacío público tearDown () {
driver.quit ();
@Prueba
búsqueda de pruebas de vacío público () {
driver.get (siteUrl);
……………… ..
……………… ..
}
39. usar las afirmaciones de TESTNG
@Prueba
búsqueda de pruebas de vacío público () {
driver.get (siteUrl);
Elemento WebElement = driver.findElement (By.id (“id123”));
assertTrue (element.isDisplayed () == true);
assertEquals (element.getText (), “valor del elemento”);
……………… ..
……………… ..
}
40. ejecute las pruebas de la unidad TESTNG a través del archivo testng.xml
41. usar DataProviders para pruebas unitarias con parámetros
@DataProvider (name = “browserNames”)
Objeto público [] [] browserNames () {
devuelve nuevo objeto [] [] {
{“Cromo”},
{“Firefox”}
};
}
public void createDriver (String browserName) lanza Excepción
{
if (browserName.equalsIgnoreCase (“Firefox”)> = 0)
driver = new FirefoxDriver ();
if (browserName.equalsIgnoreCase (“Chrome”)> = 0) {
System.setProperty (“webdriver.chrome.driver”,
“C: \\ BrowserDrivers \\ chromedriver.exe”);
controlador = nuevo ChromeDriver ();
}
}
@Test (dataProvider = “browserNames”)
public void openSite (String browser) lanza Exception {
createDriver (navegador);
driver.get (“http://www.autotrader.ca”);
driver.quit ();
}
42. use los escuchas de prueba TestNG para tomar capturas de pantalla y registrar
43. usar una clase de base de prueba para los accesorios de prueba
clase pública TestBase {
Controlador WebDriver;
@Antes de clase
configuración de vacío público () {
driver = new FirefoxDriver ();
}
@Después de clases
vacío público tearDown () {
driver.quit ();
}
}
clase pública TestClass extiende TestBase {
Cadena url = “Biblioteca pública de Vancouver |”;
@Prueba
public void testScript1 () {
driver.get (url);
}
}
——————————————————————————————
SELENIO
——————————————————————————————
44. Descarga los archivos de la biblioteca de Selenium.
- Archivo jar de Selenium Standalone Server
- Selenium enlaces de Java
- controlador de cromo
- conductor de gecko
45. adjuntar los archivos de la biblioteca de Selenium al proyecto
- clic derecho sobre el nombre del proyecto
- seleccione Propiedades
- haga clic en Java Build Path
- haga clic en bibliotecas
- haga clic en Agregar tarros externos
46. crear el objeto controlador y abrir el sitio
System.setProperty (“webdriver.chrome.driver”, “c: /selenium/chromedriver.exe”);
Controlador WebDriver = nuevo ChromeDriver ();
driver.get (“http://www.bestbuy.com”);
47. obtener el título de la página y url
driver.get (“http://www.bestbuy.com”);
String pageTitle = driver.getTitle ();
String pageUrl = driver.getCurrentUrl ();
48. encontrar un elemento y obtener su valor y atributos
Elemento WebElement = driver.findElement (By.id (“elementId”));
String elementText = element.getText ();
String classValue = element.getAttribute (“class”);
49. comprobar si un elemento se muestra, habilita y selecciona
Elemento WebElement = driver.findElement (By.id (“elementId”));
boolean isDisplayed = element.isDisplayed ();
boolean isEnabled = element.isEnabled ();
boolean isSelected = element.isSelected ();
50. escribe un elemento
Elemento WebElement = driver.findElement (By.id (“elementId”));
element.clear ();
element.sendKeys (“java”);
51. selecciona una opción de un cuadro de lista
WebElement listElement = driver.findElement (By.id (“listId”));
Select list = new Select (listElement);
list.selectByVisibleTest (“option1”);
52. encontrar elementos múltiples
- verifica cuantos elementos se encuentran
- obtener un elemento específico
- navegar a través de los elementos
Por localizador = Por nombre de clase (“abc”);
Listar elementos = driver.findElements (localizador);
int elementsCount = elements.size ();
WebElement element1 = elements.get (0);
para (int i = 0; i <elements.size (); i ++) {
WebElement e = elements.get (i);
System.out.println (e.getText ());
}
53. usar esperas explícitas y condiciones esperadas
WebDriverWait wait = new WebDriverWait (controlador, 10);
Elemento WebElement = wait.until (
Condiciones esperadas.
visibleOfElementLocated (
By.id (“elementId”));
Vea en este enlace un artículo detallado sobre cómo usar las esperas explícitas y las condiciones esperadas:
Viene con ejemplos de código completos que puedes probar por ti mismo.
54. Ejecutar código Javascript
Controlador WebDriver = nuevo FirefoxDriver ();
JavascriptExecutor js = (JavascriptExecutor) controlador;
js.executeScript (“return document.getElementById (‘someId’);”);
55. tomar capturas de pantalla
Controlador WebDriver = nuevo FirefoxDriver ();
Archivo src = ((TakesScreenshot) driver). getScreenshotAs
(Tipo de salida. ARCHIVO);
FileUtils. copyFile (src, nuevo archivo (“C: /selenium/screenshot.png”));
56. usar marcos
driver.get (“http://abc.com”);
driver.manage (). window (). maximiza ();
driver.switchTo (). frame (“frame1”);
driver.findElement (By.xpath (localizador)). click ();
driver.switchTo (). defaultContent ();
57. usar pestañas del navegador
String parentId = driver.getWindowHandle ();
Enlace de cadena = driver.findElement (localizador) .click ();
para (String winId: driver.getWindowHandles ())
if (winId.equalsIgnoreCase (parentId) == false) {
ventana driver.switchTo (). (winId);
descanso;
}
……………………………….
driver.close ();
driver.switchTo (). window (parentId);
58. usa ChromeOptions
ChromeOptions chromeOptions = new ChromeOptions ();
chromeOptions.addArguments (“- start-maximized”);
driver = new ChromeDriver (chromeOptions);
59. usar las capacidades deseadas
Capacidades de DesiredCapabilities = DesiredCapabilities.chrome ();
Proxy proxy = nuevo Proxy ();
proxy.setHttpProxy (“myhttpproxy: 3337”);
abilities.setCapability (“proxy”, proxy);
Opciones de ChromeOptions = nuevo ChromeOptions ();
options.addExtensions (nuevo archivo (“/ path / to / extension.crx”));
abilities.setCapability (ChromeOptions.CAPABILITY, opciones);
Controlador ChromeDriver = ChromeDriver nuevo (capacidades);
60. modelo de objeto de página
página pública de la página principal {
privado Por SEARCH_BOX_ID = By.id (“aaaa”);
privado Por SEARCH_BUTTON_ID = By.id (“bbbb”);
cadena privada TITLE = “título de la página de inicio”;
URL de cadena privada = “http: //www,abc.com”;
controlador privado WebDriver;
Página de inicio pública (controlador WebDriver) {
this.driver = driver;
}
vacío público abierto () {
driver.get (URL);
if (driver.getTitle) .equalsIgnoreCase (TITLE) == false)
lanzar nueva RuntimeException (“la página de inicio no se muestra!”);
}
búsqueda pública anulada (palabra clave de cadena) {
WebElement searchBox = driver.findElement (
By.id (SEARCH_BOX_ID));
searchBox.clear ();
searchBox.sendKeys (palabra clave);
WebElement searchButton = driver.findElement (
By.id (SEARCH_BUTTON_ID));
searchButton.click ();
}
……………………………………………….
@Prueba
public void searchWorks () {
HomePage homePage = nueva HomePage (controlador);
homePage.open ();
homePage.search (“java”);
}
61. crea no solo objetos de página sino también elementos de página
62. utilizar la fábrica de la página
—— CLASE DE OBJETO DE CLASE ————
paquete org.openqa.selenium.example;
import org.openqa.selenium.By;
importar org.openqa.selenium.support.CacheLookup;
importar org.openqa.selenium.support.FindBy;
importar org.openqa.selenium.support.How;
importar org.openqa.selenium.WebElement;
clase pública GoogleSearchPage {
@FindBy (how = How.NAME, utilizando = “q”)
@CacheLookup
WebElement privado searchBox;
búsqueda de vacío pública para (texto de cadena) {
searchBox.sendKeys (texto);
searchBox.submit ();
}
}
—— CLASE DE PRUEBA —————-
paquete org.openqa.selenium.example;
importar org.openqa.selenium.WebDriver;
importar org.openqa.selenium.WebElement;
importar org.openqa.selenium.htmlunit.HtmlUnitDriver;
importar org.openqa.selenium.support.PageFactory;
clase pública UsingGoogleSearchPage {
public static void main (String [] args) {
Controlador WebDriver = new HtmlUnitDriver ();
driver.get (“http://www.google.com/”);
GoogleSearchPage page = PageFactory.initElements (
conductor,
GoogleSearchPage.class);
page.searchFor (“Cheese”);
}
}
63. Carga Chrome con extensiones.
String pathToExtension =
“C: \\ Users \\ home \\ AppData \\ Local \\” +
“Google \\ Chrome \\ Datos de usuario \\ Predeterminado \\ Extensiones” +
“\\ mbopgmdnpcbohhpnfglgohlbhfongabi \\ 2.3.1_0”;
Opciones de ChromeOptions = nuevo ChromeOptions ();
options.addArguments (“- load-extension =” + pathToExtension);
controlador = nuevo ChromeDriver (opciones);
64. interactuar con las cookies del navegador.
65. emular gestos complejos utilizando la clase Acciones.
66. interactuar con deslizadores
67. crear una clase de controlador personalizado
68. Crea clases personalizadas para cada tipo de elemento HTML
69. Usar Maven para el proyecto de automatización.
70
70… 100 próximamente 🙂
——————————————————————————————-
Puedes mejorar mucho tu proyecto de Selenium con Javascript.
Aprende cómo con este ebook.