2012-06-25 9 views
6

ブラウザでWebDriverJSを実行しようとしていますが、ドキュメントがホストブラウザを制御する方法について多少曖昧です。ここで、それは言う:WebDriverJSからのセッションIDの特定

別のブラウザに対してwebdriverをテストを実行するためにブラウザを起動する(単にノードを使用する場合に比べ) 冗長TADです。その代わりに、ブラウザでWebDriverJSを使用するのは、 実際にスクリプトを実行しているブラウザを自動化することです。これは、サーバーのURLとブラウザーのセッションIDがわかっている限り達成できます。これらの値は 直接ビルダーに渡されるかもしれないが、彼らはまた、wdurlを使用して定義し、ロードページのURLクエリデータから解析され 「環境変数」を、wdsidすることができる。

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

私が欲しいですNode.jsからテストページを開き、クライアント側のスクリプトに含まれているコマンドを実行します。しかし、セッションを構築するときにセッションID(wdsidクエリパラメータ)をどのように抽出できるのかわかりません。誰にも分かりますか?

答えて

7

最後に、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_は、インスタンシエーション時にセッションデータとその他の情報を含むPromiseオブジェクトを返します。 .then(callback(sessionData))を使用すると、必要に応じてデータを操作できます。

+1

これが一度に機能した場合は、現時点では表示されません。私はそれがsessionData.id_に移動されているのを見ている – Lukus

関連する問題