Skip to content

Latest commit

 

History

History
155 lines (130 loc) · 5.04 KB

ExamplePage.md

File metadata and controls

155 lines (130 loc) · 5.04 KB

| ModelTest.java | ExamplePage.java | TableComponent.java | TableRowComponent.java | FrameComponent.java | ShadowRootComponent.java |

Sample Code

ExamplePage.java
package com.nordstrom.automation.selenium.model;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.openqa.selenium.By;
import org.openqa.selenium.SearchContext;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

import com.nordstrom.automation.selenium.annotations.PageUrl;
import com.nordstrom.automation.selenium.core.ByType;

@PageUrl("/grid/admin/ExamplePageServlet")
public class ExamplePage extends Page {

    public ExamplePage(WebDriver driver) {
        super(driver);
    }
    
    private FrameComponent frameByLocator;
    private FrameComponent frameByElement;
    private FrameComponent frameByIndex;
    private FrameComponent frameById;
    private TableComponent table;
    private List<TableComponent> tableList;
    private Map<Object, TableComponent> tableMap;
    private List<FrameComponent> frameList;
    private Map<Object, FrameComponent> frameMap;
    private ShadowRootComponent shadowRootByLocator;
    private ShadowRootComponent shadowRootByElement;
    
    protected static final String FRAME_A_ID = "frame-a";
    protected static final String FRAME_B_ID = "frame-b";
    protected static final String FRAME_C_ID = "frame-c";
    protected static final String FRAME_D_ID = "frame-d";
    
    protected enum Using implements ByEnum {
        FRAME(By.cssSelector("iframe[id^='frame-']")),
        FRAME_A(By.cssSelector("iframe#frame-a")),
        FRAME_B(By.cssSelector("iframe#frame-b")),
        FRAME_C(By.cssSelector("iframe#frame-c")),
        FRAME_D(By.cssSelector("iframe#frame-d")),
        PARA(By.cssSelector("p[id^='para-']")),
        TABLE(By.cssSelector("table#t1")),
        FORM(By.tagName("form")),
        INPUT(By.cssSelector("input#input-field")),
        CHECK(By.cssSelector("input#checkbox")),
        SHADOW_ROOT_A(By.cssSelector("div#shadow-root-a")),
        SHADOW_ROOT_B(By.cssSelector("div#shadow-root-b"));
        
        private final By locator;
        
        Using(By locator) {
            this.locator = locator;
        }

        @Override
        public By locator() {
            return locator;
        }
    }
    
    public FrameComponent getFrameByLocator() {
        if (frameByLocator == null) {
            frameByLocator = new FrameComponent(Using.FRAME_A.locator, this);
        }
        return frameByLocator;
    }
    
    public FrameComponent getFrameByElement() {
        if (frameByElement == null) {
            RobustWebElement element = (RobustWebElement) findElement(Using.FRAME_B);
            frameByElement = new FrameComponent(element, this);
        }
        return frameByElement;
    }
    
    public FrameComponent getFrameByIndex() {
        if (frameByIndex == null) {
            frameByIndex = new FrameComponent(2, this);
        }
        return frameByIndex;
    }
    
    public FrameComponent getFrameById() {
        if (frameById == null) {
            frameById = new FrameComponent(FRAME_D_ID, this);
        }
        return frameById;
    }
    
    public List<String> getParagraphs() {
        List<WebElement> paraList = findElements(Using.PARA);
        return Arrays.asList(paraList.get(0).getText(), paraList.get(1).getText(), paraList.get(2).getText());
    }
    
    public TableComponent getTable() {
        if (table == null) {
            table = new TableComponent(Using.TABLE.locator, this);
        }
        return table;
    }
    
    public List<TableComponent> getTableList() {
        if (tableList == null) {
            tableList = newComponentList(TableComponent.class, Using.TABLE.locator);
        }
        return tableList;
    }
    
    public Map<Object, TableComponent> getTableMap() {
        if (tableMap == null) {
            tableMap = newComponentMap(TableComponent.class, Using.TABLE.locator);
        }
        return tableMap;
    }
    
    public List<FrameComponent> getFrameList() {
        if (frameList == null) {
            frameList = newFrameList(FrameComponent.class, Using.FRAME.locator);
        }
        return frameList;
    }
    
    public Map<Object, FrameComponent> getFrameMap() {
        if (frameMap == null) {
            frameMap = newFrameMap(FrameComponent.class, Using.FRAME.locator);
        }
        return frameMap;
    }
    
    public ShadowRootComponent getShadowRootByLocator() {
        if (shadowRootByLocator == null) {
            shadowRootByLocator = new ShadowRootComponent(Using.SHADOW_ROOT_A.locator, this);
        }
        return shadowRootByLocator;
    }
    
    public ShadowRootComponent getShadowRootByElement() {
        if (shadowRootByElement == null) {
            RobustWebElement element = (RobustWebElement) findElement(Using.SHADOW_ROOT_B);
            shadowRootByElement = new ShadowRootComponent(element, this);
        }
        return shadowRootByElement;
    }
}