2012-06-25 16 views
6

Estoy intentando ejecutar WebDriverJS en el navegador, pero la documentación es algo imprecisa sobre cómo lograr que controle el navegador del host. En este caso, se dice:Determinación del ID de la sesión de WebDriverJS

el lanzamiento de un navegador para ejecutar una prueba WebDriver contra otro navegador es un poco redundante (en comparación con el simple uso de nodo). En cambio, el uso de WebDriverJS en el navegador está destinado al automatizando el navegador que realmente ejecuta el script. Esto se puede lograr siempre que se conozca la> URL para el servidor y la ID de sesión para el navegador. Mientras que estos valores pueden ser pasan al constructor de forma directa, sino que también pueden definirse mediante el wdurl y wdsid "variables de entorno", que son analizadas a partir de datos de consulta de URL de la página de carga:

<!-- Assuming HTML URL is /test.html?wdurl=http://localhost:4444/wd/hub&wdsid=foo1234 --> 
    <!DOCTYPE html> 
    <script src="webdriver.js"></script> 
    <input id="input" type="text"/> 
    <script> 
     // Attaches to the server and session controlling this browser. 
     var driver = new webdriver.Builder().build(); 

     var input = driver.findElement(webdriver.By.tagName('input')); 
     input.sendKeys('foo bar baz').then(function() { 
     assertEquals('foo bar baz', 
      document.getElementById('input').value); 
     }); 
    </script> 

quiero para abrir mi página de prueba desde Node.js, y luego ejecutar los comandos incluidos en el script del lado del cliente. Sin embargo, no sé cómo podría extraer el ID de sesión (parámetro de consulta wdsid) cuando construyo la sesión. ¿Alguien tiene alguna idea?

Respuesta

7

Finalmente lo descubrí después de mucha experimentación y lectura a través del código fuente WebDriverJS.

var webdriver = require('./assets/webdriver'); 

var driver = new webdriver.Builder(). 
    usingServer('http://localhost:4444/wd/hub'). 
    withCapabilities({ 
     'browserName': 'chrome', 
     'version': '', 
     'platform': 'ANY', 
     'javascriptEnabled': true 
    }). 
    build(); 

var testUrl = 'http://localhost:3000/test', 
    hubUrl = 'http://localhost:4444/wd/hub', 
    sessionId; 

driver.session_.then(function(sessionData) { 
    sessionId = sessionData.id; 
    driver.get(testUrl + '?wdurl=' + hubUrl + '&wdsid=' + sessionId); 
}); 

driver.session_ devuelve un objeto Promesa que contendrá los datos de la sesión y otra información en la instanciación. El uso de .then (callback (sessionData)) le permitirá manipular los datos como lo desee.

+1

Si esto funcionó en un punto, no parece tan ahora. Estoy viendo que se ha movido a sessionData.id_ – Lukus

Cuestiones relacionadas