From b4904adfb4542feccb2df9bb5f0c48a4caa832fa Mon Sep 17 00:00:00 2001 From: Ramon Caballero Date: Fri, 26 Jul 2024 14:53:46 +0100 Subject: [PATCH] Implement BasePage with functionality common to all pages --- src/pages/BasePage.java | 25 +++++++++++++++++++ src/pages/waits/WaitingStrategiesPage.java | 8 +++--- src/pages/webelements/AlertPanel.java | 7 +++--- .../CheckboxesAndRadioButtonsPage.java | 8 +++--- src/pages/webelements/ConfirmPanel.java | 7 +++--- src/pages/webelements/DatePickersPage.java | 11 ++++---- .../webelements/FramesAndWindowsPage.java | 8 +++--- src/pages/webelements/InputRangePage.java | 8 +++--- .../webelements/InputsWithUIDialogsPage.java | 8 +++--- .../JavaScriptPopupMessagesPage.java | 8 +++--- src/pages/webelements/ModalDialogPage.java | 8 +++--- .../webelements/MostCommonInputsPage.java | 20 +++------------ src/pages/webelements/NewWindow.java | 19 +++----------- src/pages/webelements/PromptPanel.java | 7 +++--- .../SelectDatalistAndOptionsPage.java | 8 +++--- src/pages/webelements/TablesPage.java | 8 +++--- 16 files changed, 87 insertions(+), 81 deletions(-) create mode 100644 src/pages/BasePage.java diff --git a/src/pages/BasePage.java b/src/pages/BasePage.java new file mode 100644 index 0000000..b6069b0 --- /dev/null +++ b/src/pages/BasePage.java @@ -0,0 +1,25 @@ +package pages; + +import org.openqa.selenium.WebDriver; + +public abstract class BasePage +{ + protected WebDriver driver = null; + + protected BasePage(WebDriver driver) + { + this.driver = driver; + } + + public void sleep(long millis) + { + try + { + Thread.sleep(millis); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } +} diff --git a/src/pages/waits/WaitingStrategiesPage.java b/src/pages/waits/WaitingStrategiesPage.java index beb7836..d029b3b 100644 --- a/src/pages/waits/WaitingStrategiesPage.java +++ b/src/pages/waits/WaitingStrategiesPage.java @@ -10,7 +10,9 @@ import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -public class WaitingStrategiesPage +import pages.BasePage; + +public class WaitingStrategiesPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Waiting Strategies')]") private WebElement accordionItem; @@ -33,11 +35,9 @@ public class WaitingStrategiesPage @FindBy(id = "dynamic-input") private WebElement dynamicInput; - private WebDriver driver = null; - public WaitingStrategiesPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } diff --git a/src/pages/webelements/AlertPanel.java b/src/pages/webelements/AlertPanel.java index 7d6dbf2..b2adaf3 100644 --- a/src/pages/webelements/AlertPanel.java +++ b/src/pages/webelements/AlertPanel.java @@ -3,14 +3,15 @@ package pages.webelements; import org.openqa.selenium.Alert; import org.openqa.selenium.WebDriver; -public class AlertPanel +import pages.BasePage; + +public class AlertPanel extends BasePage { private Alert alert = null; - private WebDriver driver = null; public AlertPanel(WebDriver driver) { - this.driver = driver; + super(driver); alert = driver.switchTo().alert(); } diff --git a/src/pages/webelements/CheckboxesAndRadioButtonsPage.java b/src/pages/webelements/CheckboxesAndRadioButtonsPage.java index f8ca5e3..cdfcadb 100644 --- a/src/pages/webelements/CheckboxesAndRadioButtonsPage.java +++ b/src/pages/webelements/CheckboxesAndRadioButtonsPage.java @@ -9,7 +9,9 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class CheckboxesAndRadioButtonsPage +import pages.BasePage; + +public class CheckboxesAndRadioButtonsPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Checkboxes and Radio Buttons')]") private WebElement accordionItem; @@ -20,11 +22,9 @@ public class CheckboxesAndRadioButtonsPage @FindBy(xpath = "//div[@id='radiobuttons']//input") private List radioButtons; - private WebDriver driver = null; - public CheckboxesAndRadioButtonsPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } diff --git a/src/pages/webelements/ConfirmPanel.java b/src/pages/webelements/ConfirmPanel.java index bb4f8ad..62921e5 100644 --- a/src/pages/webelements/ConfirmPanel.java +++ b/src/pages/webelements/ConfirmPanel.java @@ -3,14 +3,15 @@ package pages.webelements; import org.openqa.selenium.Alert; import org.openqa.selenium.WebDriver; -public class ConfirmPanel +import pages.BasePage; + +public class ConfirmPanel extends BasePage { private Alert confirm = null; - private WebDriver driver = null; public ConfirmPanel(WebDriver driver) { - this.driver = driver; + super(driver); confirm = driver.switchTo().alert(); } diff --git a/src/pages/webelements/DatePickersPage.java b/src/pages/webelements/DatePickersPage.java index 1129745..7e0aeb2 100644 --- a/src/pages/webelements/DatePickersPage.java +++ b/src/pages/webelements/DatePickersPage.java @@ -10,7 +10,9 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class DatePickersPage +import pages.BasePage; + +public class DatePickersPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Date Pickers')]") private WebElement accordionItem; @@ -18,11 +20,9 @@ public class DatePickersPage @FindBy(id = "html-datepicker") private WebElement htmlDatePicker; - private WebDriver driver = null; - public DatePickersPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } @@ -45,7 +45,8 @@ public class DatePickersPage SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy-MM-dd"); inputDateAsStringInJavaScriptFormat = outputDateFormat.format(inputDate); - } catch (ParseException e) + } + catch (ParseException e) { e.printStackTrace(); } diff --git a/src/pages/webelements/FramesAndWindowsPage.java b/src/pages/webelements/FramesAndWindowsPage.java index 2f3d7fb..2bda138 100644 --- a/src/pages/webelements/FramesAndWindowsPage.java +++ b/src/pages/webelements/FramesAndWindowsPage.java @@ -5,7 +5,9 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class FramesAndWindowsPage +import pages.BasePage; + +public class FramesAndWindowsPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Frames and Windows')]") private WebElement accordionItem; @@ -16,11 +18,9 @@ public class FramesAndWindowsPage @FindBy(id = "new-window-button") private WebElement newWindowButton; - private WebDriver driver = null; - public FramesAndWindowsPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } diff --git a/src/pages/webelements/InputRangePage.java b/src/pages/webelements/InputRangePage.java index 6cfe543..ae4e248 100644 --- a/src/pages/webelements/InputRangePage.java +++ b/src/pages/webelements/InputRangePage.java @@ -7,7 +7,9 @@ import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class InputRangePage +import pages.BasePage; + +public class InputRangePage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Input Range')]") private WebElement accordionItem; @@ -15,11 +17,9 @@ public class InputRangePage @FindBy(id = "range-input") private WebElement rangeInput; - private WebDriver driver; - public InputRangePage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } diff --git a/src/pages/webelements/InputsWithUIDialogsPage.java b/src/pages/webelements/InputsWithUIDialogsPage.java index 89f76d4..5fce6f5 100644 --- a/src/pages/webelements/InputsWithUIDialogsPage.java +++ b/src/pages/webelements/InputsWithUIDialogsPage.java @@ -6,7 +6,9 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class InputsWithUIDialogsPage +import pages.BasePage; + +public class InputsWithUIDialogsPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Inputs With UI Dialogs')]") private WebElement accordionItem; @@ -17,11 +19,9 @@ public class InputsWithUIDialogsPage @FindBy(id = "file-input") private WebElement fileInput; - private WebDriver driver = null; - public InputsWithUIDialogsPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } diff --git a/src/pages/webelements/JavaScriptPopupMessagesPage.java b/src/pages/webelements/JavaScriptPopupMessagesPage.java index aeb521c..d0c7563 100644 --- a/src/pages/webelements/JavaScriptPopupMessagesPage.java +++ b/src/pages/webelements/JavaScriptPopupMessagesPage.java @@ -5,7 +5,9 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class JavaScriptPopupMessagesPage +import pages.BasePage; + +public class JavaScriptPopupMessagesPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'JavaScript Popup Messages')]") private WebElement accordionItem; @@ -19,11 +21,9 @@ public class JavaScriptPopupMessagesPage @FindBy(id = "prompt-button") private WebElement promptButton; - private WebDriver driver; - public JavaScriptPopupMessagesPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } diff --git a/src/pages/webelements/ModalDialogPage.java b/src/pages/webelements/ModalDialogPage.java index 9d6d538..99fcc62 100644 --- a/src/pages/webelements/ModalDialogPage.java +++ b/src/pages/webelements/ModalDialogPage.java @@ -6,16 +6,16 @@ import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.How; import org.openqa.selenium.support.PageFactory; -public class ModalDialogPage +import pages.BasePage; + +public class ModalDialogPage extends BasePage { @FindBy(how = How.ID, using = "form-interactions-modal-close-button") private WebElement closeButton; - private WebDriver driver = null; - public ModalDialogPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } diff --git a/src/pages/webelements/MostCommonInputsPage.java b/src/pages/webelements/MostCommonInputsPage.java index f51238b..8f0d0c2 100644 --- a/src/pages/webelements/MostCommonInputsPage.java +++ b/src/pages/webelements/MostCommonInputsPage.java @@ -5,7 +5,9 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class MostCommonInputsPage +import pages.BasePage; + +public class MostCommonInputsPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Most Common Inputs')]") private WebElement accordionItem; @@ -31,11 +33,9 @@ public class MostCommonInputsPage @FindBy(id = "form-interactions-submit-button") private WebElement submitButton; - private WebDriver driver = null; - public MostCommonInputsPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); } @@ -83,16 +83,4 @@ public class MostCommonInputsPage { return readonlyInput.getAttribute("value"); } - - public void sleep(long millis) - { - try - { - Thread.sleep(millis); - } catch (InterruptedException e) - { - e.printStackTrace(); - } - - } } diff --git a/src/pages/webelements/NewWindow.java b/src/pages/webelements/NewWindow.java index 544b6b5..721c2b3 100644 --- a/src/pages/webelements/NewWindow.java +++ b/src/pages/webelements/NewWindow.java @@ -4,26 +4,15 @@ import java.util.Set; import org.openqa.selenium.WebDriver; -public class NewWindow +import pages.BasePage; + +public class NewWindow extends BasePage { - private static void sleep(long milliseconds) - { - try - { - Thread.sleep(milliseconds); - } catch (InterruptedException e) - { - e.printStackTrace(); - } - } - private String originalWindowHandle; - private WebDriver driver = null; - public NewWindow(WebDriver driver) { - this.driver = driver; + super(driver); // Get the handle (or identifier) of the original window: originalWindowHandle = driver.getWindowHandle(); diff --git a/src/pages/webelements/PromptPanel.java b/src/pages/webelements/PromptPanel.java index 84f624e..55c3352 100644 --- a/src/pages/webelements/PromptPanel.java +++ b/src/pages/webelements/PromptPanel.java @@ -3,14 +3,15 @@ package pages.webelements; import org.openqa.selenium.Alert; import org.openqa.selenium.WebDriver; -public class PromptPanel +import pages.BasePage; + +public class PromptPanel extends BasePage { private Alert prompt = null; - private WebDriver driver = null; public PromptPanel(WebDriver driver) { - this.driver = driver; + super(driver); prompt = driver.switchTo().alert(); } diff --git a/src/pages/webelements/SelectDatalistAndOptionsPage.java b/src/pages/webelements/SelectDatalistAndOptionsPage.java index 641f75a..cf4e5d9 100644 --- a/src/pages/webelements/SelectDatalistAndOptionsPage.java +++ b/src/pages/webelements/SelectDatalistAndOptionsPage.java @@ -10,7 +10,9 @@ import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.Select; -public class SelectDatalistAndOptionsPage +import pages.BasePage; + +public class SelectDatalistAndOptionsPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Select, Datalist and Options')]") private WebElement accordionItem; @@ -24,11 +26,9 @@ public class SelectDatalistAndOptionsPage Select select = null; List selectOptions = null; - private WebDriver driver; - public SelectDatalistAndOptionsPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); select = new Select(selectElement); diff --git a/src/pages/webelements/TablesPage.java b/src/pages/webelements/TablesPage.java index a0d7876..b777b6c 100644 --- a/src/pages/webelements/TablesPage.java +++ b/src/pages/webelements/TablesPage.java @@ -9,7 +9,9 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; -public class TablesPage +import pages.BasePage; + +public class TablesPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Tables')]") private WebElement accordionItem; @@ -19,11 +21,9 @@ public class TablesPage List headerRow; - private WebDriver driver = null; - public TablesPage(WebDriver driver) { - this.driver = driver; + super(driver); PageFactory.initElements(this.driver, this); // Take the cells of the 1st row (header row):