Каков правильный способ обработки модели объектов объектов для написания теста Protractor E2E для AngularJS? Я чувствую, что должен писать их в отдельных файлах (например, homepage.js, page2.js и т.д.), А затем включать их как можно скорее в спецификации, такие как модули. Однако я не знаю, как их вводить. По достоинству оценят любые предложения. Спасибо!
Объекты страницы в AngularJS Protractor E2E Testing
Ответ 1
Храните их в отдельных файлах и используйте Node require
, чтобы вытащить нужные вам помощники или объекты страницы. Посмотрите на этот супер простой пример: https://github.com/juliemr/ng-page-e2e/blob/master/test/angularsite_test.js#L2
Ответ 2
Вы пробовали с астролябом? Это реализация PageObject поверх Protractor, которая может направить вашу структуру: https://github.com/stuplum/astrolabe
Здесь вы можете увидеть, что рекомендуемая структура - это один объект страницы на файл.
Например: singInPage.js
var Page = require('astrolabe').Page;
module.exports = Page.create({
url: { value: 'http://<somesite>.com/signin' },
username: { get: function() { return this.findElement(this.by.input('username')); } }, // finds an input element with the name 'username'
submit: { get: function() { return this.findElement(this.by.id('submit')); } } // finds an element with the id 'submit'
});
он делает запись тестовых примеров и даже объектов страницы очень компактными и читаемыми.
Ответ 3
Вы должны хранить их в отдельных файлах, да.
И в вашем транспортнике referenceConf.js(config для запуска транспортира с) вы должны написать:
specs: ['<your_path>/test/pages/*Test.js']
В этом случае < protractor запустит все файлы из dir "/test/pages" с помощью маски * Test.js (loginPageTest.js, homePageTest.js)
Ответ 4
Я боюсь, что нет обычных стандартов, когда дело доходит до тестирования с объектами страницы. Вы можете найти несколько предложений среди проблем с транспортиром: https://github.com/angular/protractor/issues/401 и https://github.com/angular/protractor/issues/78
Для моих нужд я создал очень простые объекты страницы в моем проекте с открытым исходным кодом, см.: https://github.com/9ci/angle-grinder/pull/124
Также довольно интересная реализация вы можете найти в https://github.com/juliemr/ng-page-e2e/tree/master/test