2012-06-25 13 views
6

Sto tentando di eseguire WebDriverJS sul browser, ma la documentazione è piuttosto vaga su come farla controllare il browser host. Qui, si dice:Determinazione dell'ID di sessione da WebDriverJS

lancio di un browser per eseguire un test WebDriver contro un altro Browser è un po 'ridondante (rispetto al semplicemente usando nodo). Invece, l'uso di WebDriverJS nel browser è inteso per automatizzando il browser che esegue effettivamente lo script. Questo può essere ottenuto a condizione che l'URL> per il server e l'ID di sessione per il browser siano noti. Mentre questi valori possono essere passati al costruttore direttamente, possono anche essere definiti con il wdurl e wdsid "variabili d'ambiente", che sono analizzati a partire dai dati di query l'URL della pagina di caricamento:

<!-- 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> 

voglio per aprire la mia pagina di test da Node.js e quindi eseguire i comandi inclusi nello script sul lato client. Tuttavia, non so come potrei estrarre l'ID di sessione (parametro query wdsid) quando costruisco la sessione. Qualcuno ha qualche idea?

risposta

7

Finalmente capito dopo un sacco di sperimentazione e la lettura attraverso il codice sorgente di 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_ restituisce un oggetto Promesso che conterrà i dati di sessione e altre informazioni all'istanziazione. L'utilizzo di .then (callback (sessionData)) ti consentirà di manipolare i dati come desideri.

+1

Se questo ha funzionato in un punto, non sembra così ora. Vedo che è stato spostato su sessionData.id_ – Lukus

Problemi correlati