Skip to content

Commit 2cb6497

Browse files
authored
Merge pull request #9 from znsio/codeRefactor
Refactoring basepage code
2 parents f316036 + e5d0ca2 commit 2cb6497

File tree

1 file changed

+32
-32
lines changed

1 file changed

+32
-32
lines changed

src/main/java/com/znsio/rpap/pages/BasePage.java

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,51 @@
99
import org.openqa.selenium.support.ui.Select;
1010
import org.openqa.selenium.support.ui.WebDriverWait;
1111

12+
import java.util.HashMap;
13+
import java.util.Map;
14+
1215
public class BasePage extends Page {
1316

1417
public BasePage(WebDriver driver, WebDriverWait wait) {
1518
super(driver, wait);
1619
}
1720

18-
//TODO: Simplify this method. Avoid the usage of Nested else-if
1921
public void inputDataToElement(By by, String dataToInput) {
20-
2122
WebElement ele = driver.findElement(by);
2223
String tagName = ele.getTagName();
24+
scrollToView(by);
25+
Map<String, Runnable> inputHandlers = new HashMap<>();
26+
inputHandlers.put("select", () -> selectInputFromDropdown(ele, dataToInput));
27+
inputHandlers.put("textarea", () -> enterTextInTextarea(ele, dataToInput));
28+
inputHandlers.put("input", () -> enterTextInTextField(ele, dataToInput));
29+
Runnable handler = inputHandlers.get(tagName.toLowerCase());
30+
if (handler != null) {
31+
handler.run();
32+
} else {
33+
throw new UnsupportedOperationException("Unsupported input type: " + tagName);
34+
}
35+
}
2336

24-
if (tagName.equals("select")) {
25-
26-
scrollToView(by);
27-
Select dropdown = new Select(ele);
28-
dropdown.selectByVisibleText(dataToInput);
29-
30-
} else if (tagName.equals("textarea")) {
31-
32-
scrollToView(by);
33-
ele.clear();
34-
ele.sendKeys(new CharSequence[]{dataToInput});
35-
ele.sendKeys(new CharSequence[]{Keys.TAB});
37+
private void selectInputFromDropdown(WebElement element, String dataToInput) {
38+
Select dropdown = new Select(element);
39+
dropdown.selectByVisibleText(dataToInput);
40+
}
3641

37-
} else if (tagName.equals("input")) {
38-
String inputType = ele.getAttribute("type");
39-
scrollToView(by);
42+
private void enterTextInTextarea(WebElement element, String dataToInput) {
43+
element.clear();
44+
element.sendKeys(dataToInput);
45+
element.sendKeys(Keys.TAB);
46+
}
4047

41-
if ((inputType.equals("text")) || (inputType.equals("email")) || (inputType.equals("password"))) {
42-
ele.clear();
43-
ele.sendKeys(new CharSequence[]{dataToInput});
44-
ele.sendKeys(new CharSequence[]{Keys.TAB});
45-
} else if (inputType.equals("checkbox")) {
46-
if ((!ele.isSelected()) && (dataToInput.equals("1"))) {
47-
ele.click();
48+
private void enterTextInTextField(WebElement element, String dataToInput) {
49+
String inputType = element.getAttribute("type");
4850

49-
} else if ((ele.isSelected()) && (dataToInput.equals("0"))) {
50-
ele.click();
51-
}
52-
} else if (inputType.equals("radio")) {
53-
if ((!ele.isSelected()) && (dataToInput.equals("1"))) {
54-
ele.click();
55-
}
56-
}
51+
if (inputType.equals("text") || inputType.equals("email") || inputType.equals("password")) {
52+
element.clear();
53+
element.sendKeys(dataToInput);
54+
element.sendKeys(Keys.TAB);
55+
} else {
56+
throw new UnsupportedOperationException("Unsupported input type: " + inputType);
5757
}
5858
}
5959

0 commit comments

Comments
 (0)