t.me/atinfo_chat Telegram группа по автоматизации тестирования

Selenide как правильно открывать страницу?

Теги: #<Tag:0x00007f9af9a36678> #<Tag:0x00007f9af9a364e8> #<Tag:0x00007f9af9a36358> #<Tag:0x00007f9af9a35f48>

Есть у меня страничка со своим url.
Я для нее создала MyPageObject
Мне не нравится вариант open(url, MyPageObject.class), т.к. я привыкла url прятать внутри PageObject
Я сделала метод open в моем пейджобжекте и использую внутри него Selenide.open(baseUrl). Но в этом случае не очень красиво получается вызов этого самого метода open:
new MyPageObject().open();
Подскажите пожалуйста как принято это делать?)
И еще сразу вопрос про page(MyPageObject.class). Я не очень поняла что именно происходит внутри этого метода. Если я правильно понимаю, то там мы ожидаем загрузки страницы. Может кто-то более подробно объяснить?
Всем заранее спасибо)

А зачем нужно прятать url внутри page object? Это лишает возможности переиспользовать объекты для похожих страниц.

Но если хотите прятать, то да, вполне нормальный вариант new MyPageObject().open();. А почему он кажется вам некрасивым?

Метод page(My page object.class) почти ничем не отличается от new MyPageObject (), за исключением того, что он инициализирует поля с аннотациями @FindBy.

Почему мешает? url держим в базовом классе, а в конструкторе страницы переопределяем.
При наследовании никто не мешает написать в конструкторе что-то типа

public SimilarPage extends SomePreviouslyCreatedPage(){
  super();
  this.url = "http://someurl.com"
}

Да, можно так, но дизайн сомнительный. Composition over inheritance.

P.S. Как минимум стоило бы написать super("http://someurl.com") и сделать это поле private final.

Можно и так, да.