У меня есть ситуация, когда я хочу определить разнообразие поведения для моих полей.java: как автогенерировать настраиваемый метод для переменной
class SomePage {
//...
@FindBy(id = "selectEthinicity")
private WebElement ethinicitySelect;
@FindBy(id = "someId")
private WebElement usernameInputField;
@FindBy(id = "buttonSubmit")
private WebElement submitButton;
public void selectEthnicity(String param) throws Exception {
new Select(ethnicitySelect).selectByVisibleText(param);
}
public void selectEthnicityByIndex(String param) throws Exception {
new Select(ethnicitySelect).selectByIndex(Integer.parseInt(param));
}
public int getSelectEthinicityNumberOfOptions() {
new Select(ethnicitySelect).getOptions().size();
}
public void waitForOptionOfSelectEthnicityToLoad() {
//logic to wait for an options of Ethinicity to load
}
public void selectEthnicity_Wait(String param) throws Exception {
//wait
//select Ethinicity
}
public void selectEthnicityByIndex_Wait(String param) throws Exception {
//wait and
//Select Ethnicity by einde
}
//custom method for input Field
public String getUsernameInputFieldValue() {
usernameInputField.getAttribute("value");
}
public void enterUsernameInputField(String param) {
usernameInputField.sendKeys(param);
}
//custom method for button
public void clickSubmitButton() throws PageValidationException {
submitButton.click();
}
//...
}
Здесь у меня есть класс SomePage, который является Page Object (Использование страницы Factory Pattern), которые состоят из полей (WebElement
).
Основываясь на суффиксе имен полей, мне нужно создать число методов. Если суффикс *Select
, в поле будет количество методов, которые могут быть похожими для всех select field
. Если суффикс равен *Button
, он будет иметь метод, который необходим для button field
.
Могу ли я создать пользовательский метод, основанный на suffix of field names
.
ПРИМЕЧАНИЕ. IntelliJ поддерживает модификацию пользовательских Getters и Setters, но не допускает использование нескольких методов для каждого поля. Он ограничивает 1 Getter и 1 Setter в поле. Например, это не всегда так. У меня есть несколько setter (тип сеттера) или getter для поля.
Вы можете посмотреть на [Project Ломбок] (https://projectlombok.org/index.html) –
И Propably АОП. –
Есть ли причина, по которой вы не можете создать класс Radio/Button, который имеет определенные функции? Вы могли бы даже сделать суперкласс и расширить его, а затем все, что вы использовали бы в классе Temp, будут получателями и сеттерами для отдельной кнопки/радио, а затем вызовите его методы getter/setter. – Compass