Lanzar test de Selenium 2 en un navegador remoto

1
12131

Lanzar test de Selenium 2 en un navegador remoto

 

Índice de contenidos.

1. Introducción

Vimos en el tutorial de Introducción a Selenium 2 y WebDriver cómo lanzar test de integración sobre una aplicación web. Vimos que el API de WebDriver puede hacer uso de la instancia del navegador instalado en el sistema operativo donde se lanzan los test lo que conlleva un problema para el caso de las pruebas con Internet Explorer. En entornos Unix, que además son la mayoría donde se suelen tener instalados sistemas de Integración Contínua, no disponemos de este navegador por lo que la prueba fallaría.

En este tutorial veremos la forma de comunicarnos con un Internet Explorer de una máquina Windows desde un Mac para lanzar en ese navegador un test de Selenium.

2. Entorno

  • MacBook Pro 15′ (2.4 GHz Intel Core i5, 4GB DDR3 SDRAM).
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.6
  • Java 1.6.0_22
  • Selenium 2.0 Beta 2
  • JUnit 4.8.2

3. Instalar Selenium Server Standalone

Antes de hacer nuestro test de Selenium que se conecta de forma remota a la máquina Windows, debemos instalar en esa máquina el Selenium Server Standalone que estará escuchando las peticiones de conexión por parte de los clientes encargados de realizar los test.

Nos descargamos desde la web de Selenium el jar selenium-server-standalone-2.0b2.jar. Una vez descargado arrancamos el servidor de Selenium mediante el siguiente comando:

	java -jar selenium-server-standalone-2.0b2.jar

Una vez arrancado nos muestra la URL de conexión a Selenium Server:

 	RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub

Lo importante es ver que Selenium Server está escuchando peticiones en el puerto 4444 y en la URI /wd/hub, aspecto a tener en cuenta en nuestro test.

4. Test de conexión a un servidor remoto

El test que vamos a hacer es muy sencillo, simplemente conectarnos a la página de Google. Lo importante es ver las clases que se utilizan para la configuración y conexión al servidor remoto.

	@Test 
	public void testRemoteInternetExplorer() throws MalformedURLException  { 
		final DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
		final WebDriver driver = new RemoteWebDriver(new URL("http://192.168.1.131:4444/wd/hub"), capabilities); 
		driver.get("http://www.google.es");
		
		Assert.assertEquals("Google", driver.getTitle());
		driver.close();
	}

En la línea 3 configuramos el entorno de ejecución del test, en este caso le decimos que queremos arrancar el Internet Explorer instalado en la máquina remota.

A continuación (línea 4) creamos una instancia de la clase RemoteWebDriver indicando la URL de conexión al servidor Selenium remoto. Una vez conectado el driver, le indicamos que se cargue la página de Google y posteriormente comprobamos que lo haya hecho bien comparando el título de la misma. Finalmente cerramos el driver para que nos cierre el navegador.

En la consola de la máquina remota podemos ver los logs de arranque del Selenium server, conexión del cliente con los parámetros de configuración del driver para levantar el Internet Explorer, la petición de la página de Google y la comprobación del título de la misma.

5. Conclusiones

Como hemos visto no hay problema a la hora de lanzar nuestros test en cualquier entorno ya que si no disponemos de los recursos desde la máquina que lanza los test, siempre podemos conectarnos de forma remota a otra máquina que sí disponga de ellos.

Lo que no nos cansamos es de recomendar que se realicen test de las aplicaciones. Selenium es una herramienta muy recomendable para aplicaciones ya terminadas que no dispongan de test unitarios, que son muchas. Nunca es tarde para hacer test incluso en la fase de mantenimiento ya que las pruebas de regresión pueden detectar bugs que se introducen de forma accidental cuando se modifican partes del código que no se piensa que puedan estar implicadas.

Una ventaja de Selenium 2 frente a versiones anteriores es que los test se ejecutan 100% en entorno Java por lo que no es necesario configurar nada adicional como se hacía antes para el caso de Selenium Remote Control por lo que nuestro servidor de Integración Contínua lanzará los test de selenium como un test de JUnit más.

Espero que te haya sido de ayuda.

Un saludo. Juan.

1 COMENTARIO

  1. Buenas, antes que nada, gracias por el aporte sobre selenium. Es lo mas «simplificado» que he leído sobre este tema y se agradece.
    Ahora va mi duda, que seguro es bastante tonta pero me tiene bloqueado 🙂 ¿Donde y como ejecuto el script de prueba? El server lo tengo corriendo, el código del test lo entiendo, pero no se como lanzar el test :s

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad