Skip to content

Presentación de Selenium

marzo 31, 2011

A pedido de Macario ayer di una clase para los alumnos de 5to grado en la que mostré los conceptos básicos de la automatización, y en particular con Selenium.

Hicimos alguna demo con Eclipse, integrando una prueba unitaria JUnit con un test Selenium. En la demo primero comentamos el típico problema que da Selenium con el timing, que si no esperamos explícitamente por código que se cargue toda la página, tal vez intentamos ejecutar un click en un botón que aún no se ha cargado, con lo cual el test fallará (ver test1). Luego vimos cómo podríamos parametrizar las pruebas y seguir así un enfoque de data-driven test (ver test2).

--------------------------------------

	@Test
	public void test1() throws Exception {
		selenium.open("/");
		selenium.type("q", "example");
		selenium.click("btnG");

		// el test fallria si se intenta validar el texto y
		// aún no se habia terminado de cargar la página
		// para resolver este problema se plantea la siguiente solución:

		for (int second = 0;; second++) {
			if (second >= 60) fail("timeout");
			try { if (("example" + " - Buscar con Google").equals(selenium.getTitle())) break; } catch (Exception e) {}
			Thread.sleep(1000);
		}
		assertEquals("example" + " - Buscar con Google", selenium.getTitle());
		assertTrue(selenium.isTextPresent("example"));

	}

--------------------------------------

	private String aBuscar;
	private String aEncontrar;

	@Parameters
	public static Collection data() {
	        return Arrays.asList(new Object[][] {
	        		{"fede", "FEDE"}, {"example", "example"}, {"example", "fede"},}
	        		);
	        }

	// al ejecutar esta prueba se podrá observar que se hace 3 veces
	// ya que hay tres juegos de datos
	// el test entonces queda parametrizado
	// para agregar nuevos casos de test, simplemente se agregan más juegos de datos

	public testWithParameters (String buscar, String encontrar){
		aBuscar = buscar;
		aEncontrar = encontrar;
	}

	@Before
	public void setUp() throws Exception {
		selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.es/");
		selenium.start();
	}

	@Test
	public void test2() throws Exception {
		selenium.open("/");
		selenium.type("q", this.aBuscar);
		selenium.click("btnG");

		for (int second = 0;; second++) {
			if (second >= 60) fail("timeout");
			try { if ((this.aBuscar + " - Buscar con Google").equals(selenium.getTitle())) break; } catch (Exception e) {}
			Thread.sleep(1000);
		}
		assertEquals(this.aBuscar + " - Buscar con Google", selenium.getTitle());
		assertTrue(selenium.isTextPresent(this.aEncontrar));

	}
Anuncios
Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: