Возникла проблема при попытке реализовать паттерн Page Object на Python + Selenium
Есть веб сайт, где страницы имеют переходы друг на друга, то есть страница А имеет ссылку на страницу Б, а Б на А.
Соответственно есть два Python модуля для каждой страницы. Код модуля А должен возвращать объект класса Б, а код модуля Б должен возвращать объект класса А.
При попытке импортировать из модуля А модуль Б, а из Б модуль А, в питоне происходит зацикливание, которое приводит к ошибкам.
Кто-нибудь сталкивался с такой проблемой? Какие существуют решения кроме объединения классов А и Б в один модуль?
Решал тем, что логически отделил классы страниц от классов, которые реализовывали более общие решения.
Сделал бы так.
Описал бы страницу А и Б в отдельных модулях. Каждый модуль бы описывал только методы взаимодействия со страницей, типа "Ввести значение в такое-то поле" и константы с локаторами. Никаких общих функций, которые бы имели связь с другими страницами. Тогда бы страницы не содержали бы ссылок друг на друга и на другие модули проекта.
Потом бы сделал модуль, который бы реализовывал бы более общие функции и он бы содержал ссылки на обе страницы. Метод по переходу бы выглядел так "Соверши переход из страницы А на страницу Б".
Выигрыш будет не только в том, что ты избавишься от циклических ссылок и импортов, но и существенно облегчишь поддержку.