Определение идентификатора сеанса из WebDriverJS

Я пытаюсь запустить WebDriverJS в браузере, но документация несколько расплывчата о том, как заставить его управлять браузером хоста. Здесь написано:

запуск браузера для запуска теста WebDriver против другого браузера является немного избыточным (по сравнению с простым использованием node). Вместо этого использование WebDriverJS в браузере предназначено для автоматизация браузера, фактически выполняющего скрипт. Это может быть выполнено до тех пор, пока > URL для сервера и сеанса ID для браузера известны. Хотя эти значения могут быть переданные непосредственно построителю, они также могут быть определены с помощью wdurl и wdsid "переменные среды", которые анализируются из данных URL-запроса страницы загрузки:

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

Я хочу открыть свою тестовую страницу из узла.js, а затем выполните команды, включенные в сценарий на стороне клиента. Однако я не знаю, как я смогу извлечь идентификатор сеанса (параметр запроса wdsid) при построении сеанса. Делает кто-нибудь знает?

1 ответов


наконец понял это после многих экспериментов и чтения исходного кода 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);
});

драйвер.session_ возвращает объект Promise, который будет содержать данные сеанса и другую информацию при создании экземпляра. С помощью.затем (обратный вызов (sessionData)) позволит вам манипулировать данными, как вы хотите.