2014-01-23 3 views
4

Я использую транспортир с угловыми элементами для создания тестов e2e. У меня много файлов, для которых мой массив specs довольно велик, и я хочу использовать общую функцию для всех файлов. Есть ли способ создать глобальный элемент beforeEach, где я могу ввести свою функцию? Является ли объектом export.config что-то, чтобы я мог иметь общую переменную во всех файлах? В настоящее время я поддерживаю переменную «браузер», но это может быть опасно. Буду признателен за любую оказанную помощь. Благодаряtransractor angularJS глобальные переменные

ответ

12

Да, вы можете легко сделать это с помощью OnPrepare() крючок в конфигурации транспортир:

exports.config = { 
    // ... 

    // A callback function called once protractor is ready and available, and 
    // before the specs are executed 
    // You can specify a file containing code to run by setting onPrepare to 
    // the filename string. 
    onPrepare: function() { 
     // you can also add properties to globals here 
    } 
}; 
+0

Я пробовал это, но он не работает для меня. Я сделал onPrepare: function() {var ptor = protractor.getInstance(); } и ptor больше не доступны в моем первом тесте – climboid

+2

'var ptor' делает ptor локальной переменной функции onPrepare(). Вам нужно добавить его в globals: 'global.ptor = protractor.getInstance()'. Во всяком случае, это не нужно в последних версиях транспортира, который автоматически публикует глобальную переменную браузера (которую раньше называл ptor). Вам просто нужно использовать «браузер» в своих тестах. –

+2

Ahh ok, поэтому в моем комментарии я просто пытался сделать точку переменной, но я понимаю, что вы имеете в виду. Фактически я сейчас использую переменную браузера и добавляю к нему такие свойства, как browser.projectId = 10, и это сохраняется во всех моих файлах. Я думаю, что это правильный путь, то – climboid

-1

Это прекрасно работает ... Просто убедитесь, что вы правильно расторгнуть предшествующий CONFIG Params с помощью надлежащего разделителем ','.

 exports.config = { 
      seleniumAddress: **,** 
      onPrepare: function() { 
       browser.driver.manage().window().maximize(); 
      }**,** 
      baseUrl: 
      } 
+0

Это вообще не отвечает на вопрос. –

Смежные вопросы