Ответ 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
});