@FindBy(xpath = "//input[contains(@id,'lmr_contragents-cntrl')]") WebElement addressNameField; public AddressTabOutcomeDoc setAddressNameField(String name){ waitHelper.waitForVisibility(addressNameField,10); addressNameField.sendKeys(name); return this; }
Использую page factory я ищу елемент на странице, потом cоздаю метод с возвращаемым типом значения AddressTabOutcomeDoc
и возвращаю this, так как я не делаю переход на другую страницу, а просто возвращаю обновленый обект страницы(вкладки) Адресат
Дальше когда все поля заполнены мне нужно перейти на другую вкладку (страницу(отдельный класс)). Код для этого следующий:
@FindBy(xpath = "//input[contains(@id,'lmr_contragents-cntrl-button')]") WebElement addAddresatButton; public SenderTabOutcomeDoc goToSenderTab(){ waitHelper.waitForVisibility(addAddresatButton,10); addAddresatButton.click(); return new SenderTabOutcomeDoc(driver); }
Здесь у меня уже идет переход на другую страницу, поэтому я возращаю новый обьект страницы(вкладки) SenderTabOutcomeDoc.
Дальше отрывок кода самого теста:
.... addressTabOutComeDoc.setAddressNameField("Иванов И.И."); addressTabOutComeDoc.setRegisterNameField("Петров П.П.") addressTabOutComeDoc.selecCity("Киев"); SenderTabOutComeDoc senderTabOutComeDoc = addressTabOutComeDoc.goToSenderTab ....
Теперь у меня есть Внутренний документ где есть точно такая же вкладка AddressTabInternalDoc, с точно такими же полями.
Как работать с этой вкладкой:
Вариант 1. Копипастить весь код с вкладки AddressTabOutComeDoc на вкладку AddressTabInternalDoc с заменой возвращаемых значений в методах (c return new SenderTabOutcomeDoc(driver) на return new SenderTabInternalDoc(driver);)
Вариант2: Пробовал наследоваться от вкладки Адресат Исходящего Внутреним документом. Тоже не получаеться. В этом случае типы возвращаемых значений нужно делать void
Вариант3: Разработчики советуют использовать интерфейсы.
Как работать с одинаковыми страницами?
Сейчас просто использовался вариантом 1. Но в случае изменения на этой вкладки нужно будет менять в двух местах