Как стать автором
Обновить

Комментарии 10

Странно, что не нашли примеров реализации на pytest. Даже тут частично переводилось вот это руководство: selenium-python.readthedocs.io в котором есть и раздел про Page Object. На русском есть, отличный бесплатный курс на Stepic. Там все это реализовано по шагам и весьма подробно на примере небольшого сайта интернет магазина из нескольких страниц. На вашем примере из одной страницы, к сожалению, трудно будет почувствовать в чем собственно преимущество этого подхода.
Добрый день! Спасибо за комментарий.

В примере с selenium-python.readthedocs.io — реализация с другим тестовым фреймворком + в этом гайде нужно быть в контексте «реализованного».Открыв раздел Page Object — не понимаешь от куда там эти методы и что они делают. Поэтому я и решил сделать сделать на примере с одной страницей. Про курсы в Stepik — аналогично. Чтобы добраться до этого раздела необходимо пройти весь курс и сделать подготовительную работу.

Ваш комментарий услышал, в следующие разы постараюсь более наглядно.
Да, ваша правда, в selenium-python.readthedocs.io на примере unittest. Насчет, Stepic, — если человек уже работал с Selenium и pytest, то задания по ним это скорее развлечение. Они там, кстати, местами довольно веселые.
Но, допускаю, для тех кому надо быстро, ваш текст может пригодится.
Спасибо за статью! Понял, где мне нужно порефакторить мой собственный page_object. Также сам ищу информацию по просторам интернет для автоматизации с помощью Python+Appuim для мобильных устройств.
С каждым днём архитектура становится всё более поддерживаемой :) Единственное, что количество локаторов и кредо нагромождается в одном файле, но зато с этим легко работать в дальнейшем :)
Пожалуйста! Рад слышать о том, что кому-нибудь пригодились мои труды.
Конечно пригодились! Надеюсь, когда приведу свою архитектуру к постоянному рабочему виду, то смогу также поделиться этим на просторах интернета. Возможно бедолаге в виде меня это будет хорошим стартом. И будет очень круто, если этот бедолага сделает ещё лучше с использованием чужого опыта в качестве шаблона. В этом и плюс огромного IT сообщества.
Ещё раз спасибо :) Удачи Вам в продолжении автоматизации!

Не хотелось бы обидеть, но эта реализация напомнила первую картинку из мема про "как рисовать сову". Туториолов этого уровня хватает, а вот как эту самую сову в питоне дорисовать — мало информации.
В том же выше упомянутом курсе на Stepic говорят, что обычно выбирают одну из двух концепций:
1) каждый метод PO возвращает self или другой PO
2) методы ничего не возвращают


Первый способ упрощает автокомплит, но в соединении с аннотациями типов выглядит уродско (все эти импорты посреди модуля).
У вас же в примере используется третий вариант: возвращать элементы. Расскажите, почему?

Спасибо за комментарии.
В питоне, если не возвращать функцию — она будет возвращать None.
Это можно использовать для переиспользования элементов и их атрибутов.

Для этого обычно элементы делают пропертями.
Я спрашиваю, т.к. из статьи непонятно, как вы развиваете паттерн дальше. Возможны ли в вашем подходе методы, которые будут возвращать PO? Если да, то как решаете проблемы с циклическими импортами?


Мы вообще для PO используем PyPOM, вроде почти довольны, но в целом на джаве этот паттерн с меньшими костылями реализуется.

Я понял о чем вы говорите. У меня каждый Page хранится в отдельном модуле.
В самом тесте если мне необходимо взаимодействовать с другой страницей — я создаю отдельный объект.Поэтому надобности возвращать PO — нет.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации