Подтвердить что ты не робот

Объект окна доступа/область браузера от транспортира

Я запускаю тесты с транспортиром, но кажется невозможным получить доступ к объекту "окна" JS. Я даже попытался добавить тег в свой html файл, который будет содержать что-то вроде

var a = window.location;

а затем попробуйте ожидать (a), но я не смог заставить его работать, я всегда получаю ссылки undefined...

Как мне обрабатывать доступ к переменным, находящимся в области браузера?

4b9b3361

Ответ 1

Предполагая, что вы используете последнюю версию Protractor, скажем >= 1.1.0, hopefully >= 1.3.1

Попытка получить доступ к JS-коду браузера непосредственно из Protractor не будет работать, потому что Protractor работает в NodeJS, а каждый код браузера выполняется через Selenium JsonWireProtocol.

Без дополнительной информации рабочий пример:

browser.get('https://angularjs.org/');

Один слот обещает, что на сегодняшний день разрешается '1.3.0-rc.3'

browser.executeScript('return window.angular.version.full;');

Вы можете использовать его непосредственно в выражении ожидания, при котором Transractor ожидает разрешения promises для вас:

expect(browser.executeScript('return window.angular.version.full;')).
  toEqual('1.3.0-rc.3');

Более длинный пример, передающий функцию вместо строки плюс без expect, разрешающей вам обещание. то есть для большего контроля и для выполнения некоторой причудливой вещи с результатом.

browser.driver.executeScript(function() {
    return window.angular.version.full;
}).then(function(result) {
    console.log('NodeJS-side console log result: ' + result);
    //=> NodeJS-side console log result: 1.3.0-rc.3
});