Apply POM to CheckboxesAndRadioButtons
This commit is contained in:
parent
92d6619c5e
commit
c4da04e4de
|
|
@ -0,0 +1,70 @@
|
||||||
|
package pages.webelements;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
import org.openqa.selenium.support.FindBy;
|
||||||
|
import org.openqa.selenium.support.PageFactory;
|
||||||
|
|
||||||
|
public class CheckboxesAndRadioButtonsPage
|
||||||
|
{
|
||||||
|
@FindBy(xpath = "//button[contains(text(),'Checkboxes and Radio Buttons')]")
|
||||||
|
private WebElement accordionItem;
|
||||||
|
|
||||||
|
@FindBy(xpath = "//div[@id='checkboxes']//input")
|
||||||
|
private List<WebElement> checkboxes;
|
||||||
|
|
||||||
|
@FindBy(xpath = "//div[@id='radiobuttons']//input")
|
||||||
|
private List<WebElement> radioButtons;
|
||||||
|
|
||||||
|
private WebDriver driver = null;
|
||||||
|
|
||||||
|
public CheckboxesAndRadioButtonsPage(WebDriver driver)
|
||||||
|
{
|
||||||
|
this.driver = driver;
|
||||||
|
PageFactory.initElements(this.driver, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickOnAccordionItem()
|
||||||
|
{
|
||||||
|
accordionItem.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectRandomCheckboxes(int howMany)
|
||||||
|
{
|
||||||
|
// Collections.shuffle(checkboxes) is not modifying 'checkboxes' !?
|
||||||
|
// So I shuffle a list of indices instead...
|
||||||
|
|
||||||
|
List<Integer> indices = new ArrayList<>();
|
||||||
|
for (int i = 0; i < checkboxes.size(); i++)
|
||||||
|
{
|
||||||
|
indices.add(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.shuffle(indices);
|
||||||
|
|
||||||
|
for (int i = 0; i < howMany; i++)
|
||||||
|
{
|
||||||
|
checkboxes.get(indices.get(i)).click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectRandomRadioButton()
|
||||||
|
{
|
||||||
|
// Collections.shuffle(radioButtons) is not modifying 'radioButtons' !?
|
||||||
|
// So I shuffle a list of indices instead...
|
||||||
|
|
||||||
|
List<Integer> indices = new ArrayList<>();
|
||||||
|
for (int i = 0; i < radioButtons.size(); i++)
|
||||||
|
{
|
||||||
|
indices.add(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.shuffle(indices);
|
||||||
|
|
||||||
|
radioButtons.get(indices.get(0)).click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package tests.webelements;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.firefox.FirefoxDriver;
|
||||||
|
|
||||||
|
import pages.webelements.CheckboxesAndRadioButtonsPage;
|
||||||
|
|
||||||
|
public class CheckboxesAndRadioButtonsTests
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
// Specify path to WebDriver:
|
||||||
|
System.setProperty("webdriver.gecko.driver", "/snap/bin/geckodriver");
|
||||||
|
|
||||||
|
// Launch browser and navigate to test page:
|
||||||
|
WebDriver driver = new FirefoxDriver();
|
||||||
|
driver.manage().window().maximize();
|
||||||
|
driver.get("https://ramoncaballero.dev/sdet/selenium-webdriver/playgrounds/");
|
||||||
|
|
||||||
|
// Instantiate the page model:
|
||||||
|
CheckboxesAndRadioButtonsPage page = new CheckboxesAndRadioButtonsPage(driver);
|
||||||
|
|
||||||
|
// Perform actions on the page:
|
||||||
|
page.clickOnAccordionItem();
|
||||||
|
page.selectRandomCheckboxes(3);
|
||||||
|
page.selectRandomRadioButton();
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
// This is commented out so you can actually see what happened in the web page:
|
||||||
|
// driver.quit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
package webelements;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.openqa.selenium.By;
|
|
||||||
import org.openqa.selenium.WebDriver;
|
|
||||||
import org.openqa.selenium.WebElement;
|
|
||||||
import org.openqa.selenium.firefox.FirefoxDriver;
|
|
||||||
|
|
||||||
public class CheckboxesAndRadioButtons
|
|
||||||
{
|
|
||||||
public static void main(String[] args)
|
|
||||||
{
|
|
||||||
// Specify path to WebDriver:
|
|
||||||
System.setProperty("webdriver.gecko.driver", "/snap/bin/geckodriver");
|
|
||||||
|
|
||||||
// Launch browser and navigate to test page:
|
|
||||||
WebDriver driver = new FirefoxDriver();
|
|
||||||
driver.manage().window().maximize();
|
|
||||||
driver.get("https://ramoncaballero.dev/sdet/selenium-webdriver/playgrounds/");
|
|
||||||
|
|
||||||
// Click on the 'Checkboxes and Radio Buttons' accordion item:
|
|
||||||
driver.findElement(By.xpath("//button[contains(text(),'Checkboxes and Radio Buttons')]")).click();
|
|
||||||
|
|
||||||
// Get checkboxes and radio buttons by XPath:
|
|
||||||
List<WebElement> checkboxes = driver.findElements(By.xpath("//div[@id='checkboxes']//input"));
|
|
||||||
List<WebElement> radioButtons = driver.findElements(By.xpath("//div[@id='radiobuttons']//input"));
|
|
||||||
|
|
||||||
// Shuffle the lists to get random order:
|
|
||||||
Collections.shuffle(checkboxes);
|
|
||||||
Collections.shuffle(radioButtons);
|
|
||||||
|
|
||||||
// Click on the first 3 checkboxes:
|
|
||||||
for (int i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
checkboxes.get(i).click();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Click on the first radio button:
|
|
||||||
radioButtons.get(0).click();
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
// This is commented out so you can actually see what happened in the web page:
|
|
||||||
// driver.quit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue