Какой правильный способ разделения страниц на объекты в PageObject модели?

Как наиболее эффективно разделять страницы в веб-приложении на объекты PageObject в случае, когда имеются вложенные разделы, такие как в админке? Следует ли вносить каждый подраздел в отдельный файл объекта (например, AdminCatalogCategories.py, AdminCatalogProducts.py, AdminCatalogOptions.py) или описывать все в рамках одного большого файла (например, AdminCatalog.py)? Какие best practices существуют для данной ситуации?
  • 9 мая 2024 г. 13:30
Ответы на вопрос 2
Оптимальный способ разделения страниц на объекты в PageObject модели зависит от конкретного веб-приложения и его структуры. Однако, в целом, рекомендуется создавать отдельные файлы объектов для каждого логического раздела страницы.

В случае вложенных разделов, таких как в админке, лучше разделять каждый подраздел на отдельные файлы объектов. Например, вы можете создать отдельные файлы для категорий, продуктов и опций в административном разделе.

Это позволит улучшить читаемость и поддерживаемость вашего кода, так как каждый файл будет отвечать только за определенный раздел страницы. Кроме того, при необходимости внесения изменений в один из разделов, вам будет легче найти и отредактировать соответствующий файл объекта.

Также рекомендуется использовать наследование для повторяющихся элементов или действий на страницах. Например, если на всех страницах админки присутствует строка навигации, вы можете создать базовый класс с этим элементом и использовать его в каждом файле объекта.

В целом, следует придерживаться принципа разделения ответственности и создавать логически связанные объекты в отдельных файлах. Это поможет сделать ваш код более структурированным, поддерживаемым и читаемым.
Используй директории для вложенности и названия будут соответствовать каталогу. 


Станет


И в коде будешь обращаться как-то так:
from attributes.attributes import AdminPage

admin_page = AdminPage()


Таким образом, структура проекта будет отражать структуру страниц и будет проще понять контекст
Похожие вопросы