Selenium nos permite hacer pruebas de forma automatizada de páginas web con el objetivo de comprobar el buen funcionamiento de nuestros proyectos.

El módulo para node.js selenium-webdriver nos permitirá crear proyectos de pruebas de integración.

Requisitos:

Iniamos el servidor de selenium (accediendo a la carpeta donde se descargó el archivo) y ejecutando el comando siguiente:

$ java -jar selenium-server-standalone-2.44.0.jar

Creamos una directorio para nuestro proyecto y accedemos:

$ mkdir selenium-test
$ cd selenium-test

Copiamos el archivo chromedriver dentro del directorio selenium-test.

Creamos un archivo llamado package.json dentro de la carpeta selenium-test con el contenido siguiente:

{
    "name": "selenium-test",
    "version": "0.0.1"
}

Instalamos selenium-webdriver:

$ npm install selenium-webdriver --save

Se sobreescribirá el archivo package.json y quedara así (la versión ^2.44.0 podría ser superior):

{
    "name": "hack-fest-2014-inscription",
    "version": "0.0.1",
    "dependencies": {
      "selenium-webdriver": "^2.44.0"
    }
}

Creamos un archivo llamado app.js con el siguiente contenido:

var By = require('selenium-webdriver').By,
    until = require('selenium-webdriver').until,
    chrome = require('selenium-webdriver/chrome');

var driver = new chrome.Driver();

driver.get('http://www.google.com/ncr');
driver.findElement(By.name('q')).sendKeys('webdriver');
driver.findElement(By.name('btnG')).click();
driver.wait(until.titleIs('webdriver - Google Search'), 1000);
driver.quit();

Ahora solo nos queda correr la aplicación con el siguiente comando:

$ node app.js

Podemos ver una ventana de chrome que automáticamente escribe webdriver y hace una busqueda y luego se cierra. Si vemos la lógica lo que hace es visitar el sitio http://www.google.com/ncr y escribir en un elemento con nombre q el texto webdriver y luego en un elemento con nombre btnG envía un click, al cargar la página identifica que el título sea webdriver - Google Search y procede a cerrar la ventana.

Con esto ya tienes una idea de como rellenar tus formularios y como enviar los datos de forma automatizada.

También lo puedes usar para hacer travesuras como esta: https://github.com/paulomcnally/Hack-Fest-2014-inscription