Example usage for org.openqa.selenium WebElement getLocation

List of usage examples for org.openqa.selenium WebElement getLocation

Introduction

In this page you can find the example usage for org.openqa.selenium WebElement getLocation.

Prototype

Point getLocation();

Source Link

Document

Where on the page is the top left-hand corner of the rendered element?

Usage

From source file:net.codestory.simplelenium.filters.LazyShould.java

License:Apache License

private static String location(WebElement element) {
    return element.getLocation().toString();
}

From source file:org.alfresco.po.share.CustomiseUserDashboardPage.java

License:Open Source License

/**
 * Add given dashlet into given column./*ww  w.  j  ava  2  s. c  o  m*/
 * 
 * @param dashletName Dashlets
 * @param columnNumber int
 * @return {@link SiteDashboardPage}
 */
public DashBoardPage addDashlet(Dashlets dashletName, int columnNumber) {
    if (dashletName == null) {
        throw new IllegalArgumentException("Dashlet Name is required");
    }

    if (columnNumber < 1 || columnNumber > NUMBER_OF_COLUMNS) {
        throw new IllegalArgumentException("Column number should be between 1 and 4");
    }

    WebElement newDashlet = null;
    int noOfColumns = 0;

    this.selectAddDashlets();

    try {
        //            String dashletXpath = String.format("//li[@class='availableDashlet dnd-draggable']/span[text()=\"%s\"]", dashletName.getDashletName());
        //            WebElement element = findAndWait(By.xpath(dashletXpath));
        //            executeJavaScript(String.format("window.scrollTo('%s', '%s')", element.getLocation().getX(), element.getLocation().getY()));

        String dashletSelector = String.format("li.availableDashlet div.dnd-draggable[title*=\"%s\"]",
                dashletName.getDashletName().replace("'", "\'"));
        By dashlet = By.cssSelector("li.availableDashlet div.dnd-draggable[title*=\""
                + dashletName.getDashletName().replace("'", "\'") + "\"]");
        WebElement element = findAndWait(dashlet);

        // Move element into View if not already
        Actions actions = new Actions(driver);
        actions.moveToElement(element).perform();

        Coordinates coord = ((Locatable) element).getCoordinates();
        coord.inViewPort();

        element.click();
        List<WebElement> dashlets = findAndWaitForElements(AVAILABLE_DASHLETS_NAMES, getDefaultWaitTime());
        for (WebElement source : dashlets) {
            if (source.getText().equals(dashletName.getDashletName())) {
                newDashlet = source;
                break;
            }
        }
    } catch (TimeoutException te) {
        logger.error("Exceeded time to find the Available dashlet names ", te);
    }

    if (newDashlet != null) {
        try {
            String columns = driver.findElement(By.cssSelector("div[id$='default-wrapper-div']"))
                    .getAttribute("class");
            if (!StringUtils.isEmpty(columns)) {
                String columnSize = columns.substring(columns.length() - 1);
                noOfColumns = Integer.valueOf(columnSize);
            }
        } catch (NoSuchElementException te) {
            logger.error("Unable to find the Columns css " + te);
        }

        if (columnNumber <= noOfColumns) {
            try {
                List<WebElement> existingDashletsInColumn = Collections.emptyList();
                try {
                    existingDashletsInColumn = findAndWaitForElements(
                            By.cssSelector(String.format("ul[id$='column-ul-%d'] li", columnNumber)),
                            getDefaultWaitTime());
                } catch (TimeoutException e) {
                    logger.error("Selected column is empty", e);
                }
                if (existingDashletsInColumn.size() < MAX_DASHLETS_IN_COLUMN) {
                    WebElement target = findAndWait(By.xpath(String.format(
                            "//ul[@class='usedList' and contains(@id,'-column-ul-%d')]", columnNumber)));
                    executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
                    dragAndDrop(newDashlet, target);
                    return selectOk();
                } else {
                    throw new PageOperationException("Exceeded the no. of dashlets in given column.");
                }
            } catch (TimeoutException te) {
                logger.error("Exceeded time to find the Available dashlet names ", te);
            }
        } else {
            throw new PageOperationException("Expected column does not exist in available columns list.");
        }
    }

    throw new PageOperationException("Error in adding dashlet using drag and drop");
}

From source file:org.alfresco.po.share.CustomiseUserDashboardPage.java

License:Open Source License

/**
 * Add given dashlet into given column./*  w w w . j  a va 2 s  .  c om*/
 * 
 * @param dashletName String
 * @param columnNumber int
 * @return {@link SiteDashboardPage}
 */
public DashBoardPage addDashlet(String dashletName, int columnNumber) {
    if (dashletName == null) {
        throw new IllegalArgumentException("Dashlet Name is required");
    }

    if (columnNumber < 1 || columnNumber > NUMBER_OF_COLUMNS) {
        throw new IllegalArgumentException("Column number should be between 1 and 4");
    }

    WebElement newDashlet = null;
    int noOfColumns = 0;

    this.selectAddDashlets();

    try {
        String dashletXpath = String.format("//*[@class='availableDashlet dnd-draggable']/span[text()=\"%s\"]",
                dashletName);
        WebElement element = findAndWait(By.xpath(dashletXpath));
        element.click();
        List<WebElement> dashlets = findAndWaitForElements(AVAILABLE_DASHLETS_NAMES, getDefaultWaitTime());
        for (WebElement source : dashlets) {
            if (source.getText().equals(dashletName)) {
                newDashlet = source;
                break;
            }
        }
    } catch (TimeoutException te) {
        logger.error("Exceeded time to find the Available dashlet names ", te);
    }

    if (newDashlet != null) {
        try {
            String columns = driver.findElement(By.cssSelector("div[id$='default-wrapper-div']"))
                    .getAttribute("class");
            if (!StringUtils.isEmpty(columns)) {
                String columnSize = columns.substring(columns.length() - 1);
                noOfColumns = Integer.valueOf(columnSize);
            }
        } catch (NoSuchElementException te) {
            logger.error("Unable to find the Columns css " + te);
        }

        if (columnNumber <= noOfColumns) {
            try {
                List<WebElement> existingDashletsInColumn = Collections.emptyList();
                try {
                    existingDashletsInColumn = findAndWaitForElements(
                            By.cssSelector(String.format("ul[id$='column-ul-%d'] li", columnNumber)),
                            getDefaultWaitTime());
                } catch (TimeoutException e) {
                    logger.error("Selected column is empty", e);
                }
                if (existingDashletsInColumn.size() < MAX_DASHLETS_IN_COLUMN) {
                    WebElement target = findAndWait(By.xpath(String.format(
                            "//ul[@class='usedList' and contains(@id,'-column-ul-%d')]", columnNumber)));
                    executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
                    dragAndDrop(newDashlet, target);
                    return selectOk();
                } else {
                    throw new PageOperationException("Exceeded the no. of dashlets in given column.");
                }
            } catch (TimeoutException te) {
                logger.error("Exceeded time to find the Available dashlet names ", te);
            }
        } else {
            throw new PageOperationException("Expected column does not exist in available columns list.");
        }
    }

    throw new PageOperationException("Error in adding dashlet using drag and drop");
}

From source file:org.alfresco.po.share.site.CustomiseSiteDashboardPage.java

License:Open Source License

/**
 * Add given dashlet into given column.//  www. j a v a2  s  .  com
 *
 * @param dashletName Dashlets
 * @param columnNumber int
 * @return {@link SiteDashboardPage}
 */
public SiteDashboardPage addDashlet(Dashlets dashletName, int columnNumber) {
    if (dashletName == null) {
        throw new IllegalArgumentException("Dashlet Name is required");
    }

    if (columnNumber < 1 || columnNumber > NUMBER_OF_COLUMNS) {
        throw new IllegalArgumentException("Column number should be between 1 and 4");
    }

    WebElement newDashlet = null;
    int noOfColumns = 0;

    this.selectAddDashlets();

    try {
        String dashletSelector = String.format("li.availableDashlet div[title*='%s']",
                dashletName.getDashletName());
        WebElement element = findAndWait(By.cssSelector(dashletSelector));
        element.click();
        List<WebElement> dashlets = findAndWaitForElements(AVAILABLE_DASHLETS_NAMES);
        for (WebElement source : dashlets) {
            if (source.getText().equals(dashletName.getDashletName())) {
                newDashlet = source;
                break;
            }
        }
    } catch (TimeoutException te) {
        logger.error("Exceeded time to find the Available dashlet names ", te);
        throw new PageOperationException("Error in adding dashlet using drag and drop", te);
    }

    if (newDashlet != null) {
        try {
            String columns = driver.findElement(By.cssSelector("div[id$='default-wrapper-div']"))
                    .getAttribute("class");
            if (!StringUtils.isEmpty(columns)) {
                String columnSize = columns.substring(columns.length() - 1);
                noOfColumns = Integer.valueOf(columnSize);
            }
        } catch (NoSuchElementException te) {
            logger.error("Unable to find the Columns css " + te);
        }

        if (columnNumber <= noOfColumns) {
            try {
                List<WebElement> existingDashletsInColumn = Collections.emptyList();
                try {
                    existingDashletsInColumn = findAndWaitForElements(
                            By.cssSelector(String.format("ul[id$='column-ul-%d'] li", columnNumber)));
                } catch (TimeoutException e) {
                    logger.error("Selected column is empty", e);
                }
                if (existingDashletsInColumn.size() < MAX_DASHLETS_IN_COLUMN) {
                    WebElement target = findAndWait(By.xpath(String.format(
                            "//ul[@class='usedList' and contains(@id,'-column-ul-%d')]", columnNumber)));
                    executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
                    dragAndDrop(newDashlet, target);
                    return selectOk();
                } else {
                    throw new PageOperationException("Exceeded the no. of dashlets in given column.");
                }
            } catch (TimeoutException te) {
                logger.error("Exceeded time to find the Available dashlet names ", te);
            }
        } else {
            throw new PageOperationException("Expected column does not exist in available columns list.");
        }
    }

    throw new PageOperationException("Error in adding dashlet using drag and drop");
}

From source file:org.alfresco.po.share.site.CustomiseSiteDashboardPage.java

License:Open Source License

/**
 * Add given dashlet into given column./*from   ww w.j a v a 2 s.  c om*/
 *
 * @param dashletName String
 * @param columnNumber int
 * @return {@link SiteDashboardPage}
 */
@Deprecated
public SiteDashboardPage addDashlet(String dashletName, int columnNumber) {
    if (dashletName == null) {
        throw new IllegalArgumentException("Dashlet Name is required");
    }

    if (columnNumber < 1 || columnNumber > NUMBER_OF_COLUMNS) {
        throw new IllegalArgumentException("Column number should be between 1 and 4");
    }

    WebElement newDashlet = null;
    int noOfColumns = 0;

    this.selectAddDashlets();

    try {
        String dashletXpath = String.format("//*[@class='availableDashlet dnd-draggable']/span[text()='%s']",
                dashletName);
        WebElement element = findAndWait(By.xpath(dashletXpath));
        element.click();
        List<WebElement> dashlets = findAndWaitForElements(AVAILABLE_DASHLETS_NAMES);
        for (WebElement source : dashlets) {
            if (source.getText().equals(dashletName)) {
                newDashlet = source;
                break;
            }
        }
    } catch (TimeoutException te) {
        logger.error("Exceeded time to find the Available dashlet names " + te);
    }

    if (newDashlet != null) {
        try {
            String columns = driver.findElement(By.cssSelector("div[id$='default-wrapper-div']"))
                    .getAttribute("class");
            if (!StringUtils.isEmpty(columns)) {
                String columnSize = columns.substring(columns.length() - 1);
                noOfColumns = Integer.valueOf(columnSize);
            }
        } catch (NoSuchElementException te) {
            logger.error("Unable to find the Columns css " + te);
        }

        if (columnNumber <= noOfColumns) {
            try {
                List<WebElement> existingDashletsInColumn = Collections.emptyList();
                try {
                    existingDashletsInColumn = findAndWaitForElements(
                            By.cssSelector(String.format("ul[id$='column-ul-%d'] li", columnNumber)));
                } catch (TimeoutException e) {
                    logger.error("Selected column is empty", e);
                }
                if (existingDashletsInColumn.size() < MAX_DASHLETS_IN_COLUMN) {
                    WebElement target = findAndWait(By.xpath(String.format(
                            "//ul[@class='usedList' and contains(@id,'-column-ul-%d')]", columnNumber)));
                    executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
                    dragAndDrop(newDashlet, target);
                    return selectOk();
                } else {
                    throw new PageOperationException("Exceeded the no. of dashlets in given column.");
                }
            } catch (TimeoutException te) {
                logger.error("Exceeded time to find the Available dashlet names ", te);
            }
        } else {
            throw new PageOperationException("Expected column does not exist in available columns list.");
        }
    }

    throw new PageOperationException("Error in adding dashlet using drag and drop");
}

From source file:org.alfresco.po.share.site.CustomizeSitePage.java

License:Open Source License

/**
 * Move pages from Current Site Pages to Available Site Pages 
 * /* w  w w  .j ava2s. c o  m*/
 * @param pageType
 * @return
 */
public HtmlPage addToAvailablePages(SitePageType pageType) {
    WebElement target = driver.findElement(AVAILABLE_PAGES);
    try {
        WebElement elem = driver.findElement(pageType.getLocator());
        executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
        dragAndDrop(elem, target);
    } catch (TimeoutException toe) {
        throw new PageException("Not able to find Site Page: " + pageType, toe);
    }
    return getCurrentPage();
}

From source file:org.alfresco.po.share.site.CustomizeSitePage.java

License:Open Source License

/**
 * Move pages from Available Site Pages to Current Site Pages
 * //from   w ww  .  j ava  2  s  . co m
 * @param pageType
 * @return
 */
public HtmlPage addToCurrentPages(SitePageType pageType) {
    WebElement target = driver.findElement(CURRENT_PAGES_CONTAINER);
    try {
        WebElement elem = driver.findElement(pageType.getLocator());
        executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
        dragAndDrop(elem, target);
    } catch (TimeoutException toe) {
        throw new PageException("Not able to find Site Page: " + pageType, toe);
    }
    return getCurrentPage();
}

From source file:org.alfresco.po.share.site.CustomizeSitePage.java

License:Open Source License

/**
 * Method used to add pages using coordinates for dropping
 *
 * @param pageTypes List<SitePageType>
 * @return SiteDashboardPage// w  w w . ja v a2s.com
 */
public HtmlPage addPages(List<SitePageType> pageTypes) {

    if (getAvailablePages().containsAll(pageTypes)) {
        for (SitePageType theTypes : pageTypes) {
            try {
                WebElement elem = driver.findElement(theTypes.getLocator());
                WebElement target = driver.findElement(CURRENT_PAGES_CONTAINER);

                executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
                dragAndDrop(elem, target);
            } catch (TimeoutException e) {
                throw new PageException("Not able to Site Page in the Page : " + theTypes, e);
            }
        }
    } else {
        throw new PageException(
                "Some of Site Page(s) are not available to add, may be already added. " + pageTypes.toString());
    }
    if (!getAddedPages().containsAll(pageTypes)) {
        throw new PageException("Not all pages were added!");
    }
    driver.findElement(SAVE_BUTTON).click();
    waitUntilAlert();
    return getCurrentPage();
}

From source file:org.alfresco.po.share.site.CustomizeSitePage.java

License:Open Source License

/**
 * Method used to add current pages to Available Pages Section using coordinates for dropping and click OK button
 * to customise site page//from   w  ww  .ja v  a  2s. co  m
 *
 * @param pageTypes List<SitePageType>
 * @return SiteDashboardPage
 */
public HtmlPage addToAvailablePagesAndClickOK(List<SitePageType> pageTypes) {
    WebElement target = driver.findElement(AVAILABLE_PAGES);

    if (getCurrentPages().containsAll(pageTypes)) {
        for (SitePageType theTypes : pageTypes) {
            try {
                WebElement elem = driver.findElement(theTypes.getLocator());
                executeJavaScript(String.format("window.scrollTo(0, '%s')", target.getLocation().getY()));
                dragAndDrop(elem, target);
            } catch (TimeoutException e) {
                throw new PageException("Not able to Site Page in the Page : " + theTypes, e);
            }
        }
    } else {
        throw new PageException(
                "Some of Site Page(s) are not available to add to Available Pages Site, may be already added. "
                        + pageTypes.toString());
    }
    driver.findElement(SAVE_BUTTON).click();
    waitUntilAlert();
    return getCurrentPage();
}

From source file:org.apache.archiva.web.test.parent.AbstractSeleniumTest.java

License:Apache License

public <V> V tryClick(By clickableLocator, Function<? super WebDriver, V> conditions, String message,
        int attempts, int maxWaitTimeInS) {

    getWebDriver().manage().window().maximize();
    int count = attempts;
    WebDriverWait wait = new WebDriverWait(getWebDriver(), maxWaitTimeInS);
    V result = null;/*from w w  w .ja v a 2s  .  c o m*/
    Exception ex = null;
    WebElement el = null;
    while (count > 0) {
        try {
            el = wait.until(ExpectedConditions.elementToBeClickable(clickableLocator));
            Actions actions = new Actions(getWebDriver());
            actions.moveToElement(el).click().perform();
            result = wait.until(conditions);
            return result;
        } catch (Exception e) {
            logger.info("Error: {}, {}, {}", count, e.getClass().getName(), e.getMessage());
            if (el != null) {
                // Elements may be stale and throw an exception, if the location is requested
                try {
                    Point elLoc = el.getLocation();
                    logger.info("Location: x={} y={}", elLoc.getX(), elLoc.getY());
                } catch (Throwable e2) {
                    logger.info("Could not determine location");
                }
            }
            ex = e;
            count--;
        }
        try {
            Thread.currentThread().sleep(500);
        } catch (InterruptedException e) {
            // Ignore
        }
    }
    if (ex != null) {
        Assert.fail(message);
    }
    return result;
}