Saltar al contenido principal
Página

Tema 2.8 - Winium & Page Object Model + Cucumber

Utilizaremos el siguiente arquetipo para el proyecto.


Consideraciones a tener en cuenta:

Serenity.conf


Antes de iniciar a programar las automatizaciones debemos realizar las siguientes configuraciones: 

1. Debemos indicarle a serenity que utilizaremos un driver customizado:

1
2
3
4
5
6
webdriver{
	driver = provided
	provided.type = mydriver
	provided.mydriver = "starter.winium.util.CustomWiniumDriver"
	thucydides.driver.capabilities = mydriver
}

En la propiedad “provided.mydriver” debemos indicar donde se encuentra la clase que contiene las configuraciones del driver a utilizar en este caso “CustomWiniumDriver”

 2. Debemos indicar la ruta donde se encuentra el programa a probar y la ruta del driver de la siguiente manera:


1
2
3
4
5
6
environments {
	default {
		windows.program.path = "C:/windows/system32/calc.exe"
		servidor.winium.path = src/test/resources/webdriver/windows/WiniumDriver.exe"
	}
}

Driver Personalizado


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
packege.starter.winium.util;

import.java.io.IOException;

public class CustomWiniumDriver implements DriverSource{

	public CustomWiniumDriver(){
		super();
	}
	
	@Override
	public WebDriver newDriver(){
		try{
			EnvironmentVariables vA = Injectors.getInjector().getInstance(EnvironmentVariables.class);
			String directorio = EnviromentSpecificConfiguration.from(vA).getProperty("windows.program.path");
			
			DesktopOptions option = new DesktopOptions();
			option.setAplicationPath(directorio);
			option.setDebugConnectToRunningApp(false);
			option.setLauchDelay(1);
			
			return new WiniumDriver(new URL("http://localhost:9999"),option);
			
		}catch(IOException e){
			throw new NoSePudoInstanciarElDriver("No se pudo instanciar el driver $",e);
		}
	}
	
	@Override
	public boolean takesScreenshots(){
		return true;
	}
}




 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package.starter.winium.hook;

import.java.io.IOException;

public class ServidorWinium{

	private Process proceso;
	private EnvironmentVariables variablesDeAmbiente = Injectors.getInjector().getInstance(EnvironmentVariables.class);
	
	@Before
	public void iniciarServidorWinium() thows IOException, InterruptedException{
		String directorio = EnviromentSpecificConfiguration.from(variablesDeAmbiente).getProperty("servidor.winium.path");
		ProcessBuilder constructor = new ProcessBuilder(new File(directorio).getAbsolutePath());
		proceso = constructor.start();
		proceso.waitFor(3, TimeUnit.SECONDS);
	}
	
	@After
	public void terminarServidorWinium(){
		proceso.destroy();
	}
}

Se utiliza un hook Before para iniciar el servidor winium a través de la clase processBuilder para no tener que inicializara el servidor manualmente, asi mismo se realiza un hook After para terminar el proceso antes mencionado al terminar la ejecución del test.

Mapeo de objetos y acciones.

El mapeo y las acciones sobre los objetos se realiza como comúnmente lo hacemos en el Page Object.


Última modificación: lunes, 11 de mayo de 2020, 23:32