Передача в родительский элемент информации о том кто вызвал метод родительского класса
Вопрос заключается в том, что у меня есть классы, которые описывают веб-элементы (Button
, Input
и т.д).
Я решил создать базовый класс, от которого они все наследуются (BaseElement
) и вынести в него все методы, которые можно сделать над всеми элементами (click
, move
и прочее), но из-за того, что я везде использую return this
, чтобы просто через точку вызывать методы, когда я вызываю сначала метод родителя, мне перестают быть доступны методы потомка.
Есть возможность из родителя возвращать ссылку на объект, который и вызвал метод родителя?
Пример метода родителя:
public BaseElement clickElement() {
Allure.step("Клик на " + typeElement + " " + getName() + "'");
WaitT.elementToBeClickable(this.getWrappedElement());
this.getWrappedElement().click();
return this;
}
Пример метода потомка:
public CheckBox enableCheckBox() {
if (!isChecked()){
Allure.step("Клик по чек-боксу '" + getName() + "'");
WaitT.elementToBeClickable(this.getWrappedElement());
this.getWrappedElement().click();
}
return this;
}
Пример использования, тут ошибка, потому что метод родителя вернул BaseElement
, а не TextBox
:
var loginPage = new LoginPage();
loginPage.loginUser.clickElement().enterTextFromTextBox(LOGIN);