Мне трудно привыкнуть к шаблону PageObject WebDriver. Пожалуйста, поделитесь своим опытом и способами использования шаблона PageObjects и loadableComponents.
Поскольку PageObject обычно представляет собой компонент или часть функциональности, сначала мне пришло в голову, что я должен использовать его для выполнения каких-то действий в load () и посмотреть, выполняет ли он то же, что и в isLoaded ().
Тогда я понял, что его следует использовать только для «загрузки» объектов (возможно, для инициализации), как в случае перемещения по сайту, каждый объект имеет свой собственный URL. И использование isLoaded () для проверки того, готов ли объект для тестирования.
Но если у вас есть сложный отправитель заказов JavaScript для тестирования, который является составной частью загрузчика файлов JS, формы JS, основанной на 2 независимых частях и есть три вида заказов, вы никуда не перемещаетесь (относительно URL) Просто состояние элементов меняется.
Рассмотрим метод get (). Вы попадаете на страницу с интерактивной формой. Загружается, когда форма существует на странице. Тогда у вас есть объекты form1 и form2 ... как должны выглядеть их методы load () и isLoaded (), они сразу готовы к действию, потому что им не нужна загрузка, просто тестируют свои сервисы.
Это беспорядок, никто не знает, используется ли метод isLoaded () для проверки, загружен ли объект, загружен ли объект и был ли он правильно настроен. Но я думаю, что первый способ верен, и что правильность его настройки должна быть обеспечена в ходе тестов.
Сценарий:
Testing first part of html form - test that field client side validation works
Testing the second one that depends on the first one
Testing the following file uploader - upload, canceling, clearing, order, fileIDs
Testing the overall html form submission - ServerSide validation errors, results
В документации сказано:
- LoadableComponent
PageObjects
Публичные методы представляют сервисы, которые предлагает страница
Проверка, загрузка, загрузка нескольких, отмена, очистка
Старайтесь не подвергать внутренности страницы
Единственное, что приходит мне в голову, - это скрыть экземпляр экземпляра Driver для UnitTests и использовать только PageObjects для хранения всех имен полей, имен классов css в PageObjects + предоставления PageObjects входных данных и утверждения логического результата служб / функциональных возможностей
Методы, возвращающие другие объекты PageObjects
К этому сложнее всего привыкнуть. Наличие 4-х страничных объектов для одной интерактивной формы вроде не кажется естественным. Они рекомендуют Form1, Form2 (Form1), Upload (Form2), Submit (Upload), хотя я нахожу цепочку и передачу ссылки на предыдущий объект очень хаотичной. Вызов get () для всех из них в тестовом методе выглядит лучше. Но я предполагаю, что идея заключается не в том, чтобы выставить экземпляр Driver для тестов, а в том, чтобы использовать только PageObjects, которые используют экземпляр Driver внутри
Различные результаты для одного и того же действия моделируются как разные методы
Я полагаю, это означает, что не следует принимать решение о достоверности этого действия на стороне объекта Page, а на стороне теста