6

ブラウザでWebDriverJSを実行しようとしていますが、ホストブラウザを制御する方法についてのドキュメントがややあいまいです。ここで、それは言います:

別のブラウザーに対してWebDriverテストを実行するためにブラウザーを起動することは、(単にノードを使用する場合と比較して)少し冗長です。代わりに、ブラウザーでWebDriverJSを使用することは、実際にスクリプトを実行しているブラウザーを自動化することを目的としています。これは、サーバーのURLとブラウザのセッションIDがわかっている限り実行できます。これらの値はビルダーに直接渡すことができますが、ロードページのURLクエリデータから解析されるwdurlおよび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クエリパラメーター)を抽出する方法がわかりません。誰かが何か考えを持っていますか?

4

1 に答える 1

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))を使用すると、必要に応じてデータを操作できます。

于 2012-06-26T18:58:56.930 に答える