Python: помогите разобраться с Page Object

Теги: #<Tag:0x00007f78f55b7258> #<Tag:0x00007f78f55b7190> #<Tag:0x00007f78f55b70c8> #<Tag:0x00007f78f55b7000> #<Tag:0x00007f78f55b6f38>

Всем привет!
Использую вот этот проект для построения ‘настоящего’ PageObject

  • https://github.com/TimurNurlygayanov/ui-tests-example/tree/master/pages
    Тут всё понятно, работает, но если я добавляю другие страницы проекта и обращаюсь к ним в коде(создавая их объекты) то страница текущая перезагружается потому что в базовом классе страницы в методе init есть self.get(url), подскажите пожалуйста как этого избежать? Нужно как-то иначе реализовывать init в новых страницах которые наследуются от base.py
  • https://github.com/TimurNurlygayanov/ui-tests-example/blob/master/pages/base.py

Привет. я как юниор не настаивая предположу, что планировалось закрывать браузер фикстурой после каждого теста, а иначе мало смысла помещать wd.get() в конструктор.

если отвечать на вопрос в том виде как он сформулирован, могу предложить переопределять конструктор без расширения.

Спасибо, но не совсем понял как нужно работать с объектами других страниц не переопределяя конструктор

в методе init наследника мы вызываем super().init() , - выполняются все действия в init класса-предка, в числе которых driver.get. (Как не вызвать - пример в пастбине)
Но это не очень подход, лучше отредактировать предка или разбить предка на 2 класса, чтобы один класс стал по-настоящему базовым и его функциональность не нужно было изменять.

Я бы просто убрал self.get(url) из init базового класса. Держать его там может быть удобно только для простых случаев, или когда у нас тестами можно все page objects отдельно друг от друга протестировать.
Вот альтернативные варианты базовых классов:

А переходить на соответствующий урл можно в той же фикстуре.

1 симпатия