|
9 | 9 | import org.openqa.selenium.support.ui.Select; |
10 | 10 | import org.openqa.selenium.support.ui.WebDriverWait; |
11 | 11 |
|
| 12 | +import java.util.HashMap; |
| 13 | +import java.util.Map; |
| 14 | + |
12 | 15 | public class BasePage extends Page { |
13 | 16 |
|
14 | 17 | public BasePage(WebDriver driver, WebDriverWait wait) { |
15 | 18 | super(driver, wait); |
16 | 19 | } |
17 | 20 |
|
18 | | - //TODO: Simplify this method. Avoid the usage of Nested else-if |
19 | 21 | public void inputDataToElement(By by, String dataToInput) { |
20 | | - |
21 | 22 | WebElement ele = driver.findElement(by); |
22 | 23 | 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 | + } |
23 | 36 |
|
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 | + } |
36 | 41 |
|
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 | + } |
40 | 47 |
|
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"); |
48 | 50 |
|
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); |
57 | 57 | } |
58 | 58 | } |
59 | 59 |
|
|
0 commit comments