Search in sources :

Example 11 with RealHtmlElementState

use of com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState in project ats-framework by Axway.

the class RealHtmlElement method pressEscapeKey.

/**
     * Simulate Escape key
     */
@Override
@PublicAtsApi
public void pressEscapeKey() {
    new RealHtmlElementState(this).waitToBecomeExisting();
    WebElement element = RealHtmlElementLocator.findElement(this);
    element.sendKeys(Keys.ESCAPE);
}
Also used : RealHtmlElementState(com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState) WebElement(org.openqa.selenium.WebElement) PublicAtsApi(com.axway.ats.common.PublicAtsApi)

Example 12 with RealHtmlElementState

use of com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState in project ats-framework by Axway.

the class RealHtmlElement method scrollTo.

/**
     * Scroll to this element, so it is viewable.
     * Should be used when working in large pages where scrolling is possible and needed.
     */
@PublicAtsApi
public void scrollTo() {
    new RealHtmlElementState(this).waitToBecomeExisting();
    WebElement element = RealHtmlElementLocator.findElement(this);
    ((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView();", element);
}
Also used : RealHtmlElementState(com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) WebElement(org.openqa.selenium.WebElement) PublicAtsApi(com.axway.ats.common.PublicAtsApi)

Example 13 with RealHtmlElementState

use of com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState in project ats-framework by Axway.

the class RealHtmlTable method getColumnCount.

/**
     * @return how many columns this table has
     */
@PublicAtsApi
public int getColumnCount() {
    new RealHtmlElementState(this).waitToBecomeExisting();
    String css = this.getElementProperty("_css");
    try {
        if (!StringUtils.isNullOrEmpty(css)) {
            StringBuilder sb = new StringBuilder(css);
            sb.append(" tr:nth-child(1) td");
            int count = webDriver.findElements(By.cssSelector(sb.toString())).size();
            sb = new StringBuilder(css);
            sb.append(" tr:nth-child(1) th");
            count += webDriver.findElements(By.cssSelector(sb.toString())).size();
            return count;
        } else {
            // get elements matching the following xpath
            return this.webDriver.findElements(By.xpath("(" + properties.getInternalProperty(HtmlElementLocatorBuilder.PROPERTY_ELEMENT_LOCATOR) + "//tr[th or td])[1]/*")).size();
        }
    } catch (Exception e) {
        throw new SeleniumOperationException(this, "getColumnsCount", e);
    }
}
Also used : RealHtmlElementState(com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState) SeleniumOperationException(com.axway.ats.uiengine.exceptions.SeleniumOperationException) SeleniumOperationException(com.axway.ats.uiengine.exceptions.SeleniumOperationException) VerifyNotEqualityException(com.axway.ats.uiengine.exceptions.VerifyNotEqualityException) VerifyEqualityException(com.axway.ats.uiengine.exceptions.VerifyEqualityException) PublicAtsApi(com.axway.ats.common.PublicAtsApi)

Example 14 with RealHtmlElementState

use of com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState in project ats-framework by Axway.

the class RealHtmlTable method getAllValues.

/**
     * Get the values of all table cells.</br>
     * 
     * <b>Note:</b> If a table cell contains a checkbox - we will return 'checked' or 'notchecked' value.
     * 
     * @return a two dimensional array containing all table cell values
     */
@PublicAtsApi
public String[][] getAllValues() {
    new RealHtmlElementState(this).waitToBecomeExisting();
    WebElement table = RealHtmlElementLocator.findElement(this);
    String scriptForHtml = generateScriptForGettingTableContent(".innerHTML");
    Object returnedHtmlValue = ((JavascriptExecutor) webDriver).executeScript(scriptForHtml, table);
    String scriptForObjects = generateScriptForGettingTableContent("");
    Object returnedObjectsValue = ((JavascriptExecutor) webDriver).executeScript(scriptForObjects, table);
    String[][] tableData = null;
    if (returnedHtmlValue != null && returnedHtmlValue instanceof List && returnedObjectsValue != null && returnedObjectsValue instanceof List) {
        List<?> htmlTable = (List<?>) returnedHtmlValue;
        List<?> objectsTable = (List<?>) returnedObjectsValue;
        // allocate space for a number of rows
        tableData = new String[htmlTable.size()][];
        for (int iRow = 0; iRow < htmlTable.size(); iRow++) {
            if (htmlTable.get(iRow) instanceof List) {
                List<?> htmlRow = (List<?>) htmlTable.get(iRow);
                List<?> objectsRow = (List<?>) objectsTable.get(iRow);
                // allocate space for the cells of the current row
                tableData[iRow] = new String[htmlRow.size()];
                for (int iColumn = 0; iColumn < htmlRow.size(); iColumn++) {
                    Object htmlWebElement = htmlRow.get(iColumn);
                    Object objectWebElement = objectsRow.get(iColumn);
                    // some data cannot be presented in textual way - for example a checkbox 
                    String htmlValueString = htmlWebElement.toString().toLowerCase().replace("\r", "").replace("\n", "");
                    if (htmlValueString.matches(".*<input.*type=.*[\"|']checkbox[\"|'].*>.*")) {
                        // We assume this is a checkbox inside a table cell.
                        // We will return either 'checked' or 'notchecked'
                        tableData[iRow][iColumn] = htmlValueString.contains("checked") ? "checked" : "notchecked";
                    } else {
                        // proceed in the regular way by returning the data visible to the user
                        tableData[iRow][iColumn] = ((RemoteWebElement) objectWebElement).getText();
                    }
                }
            }
        }
    } else {
        log.warn("We could not get the content of table declared as: " + this.toString());
    }
    return tableData;
}
Also used : RealHtmlElementState(com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) List(java.util.List) WebElement(org.openqa.selenium.WebElement) RemoteWebElement(org.openqa.selenium.remote.RemoteWebElement) PublicAtsApi(com.axway.ats.common.PublicAtsApi)

Example 15 with RealHtmlElementState

use of com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState in project ats-framework by Axway.

the class RealHtmlTable method setFieldValue.

/**
     * Set value of specified table field
     *
     * @param value the new table cell value
     * @param row the field row starting at 0
     * @param column the field column starting at 0
     * @return
     */
@Override
@PublicAtsApi
public void setFieldValue(String value, int row, int column) {
    new RealHtmlElementState(this).waitToBecomeExisting();
    WebElement table = RealHtmlElementLocator.findElement(this);
    String script = "var table = arguments[0]; var row = arguments[1]; var col = arguments[2];" + "if (row > table.rows.length) { return \"Cannot access row \" + row + \" - table has \" + table.rows.length + \" rows\"; }" + "if (col > table.rows[row].cells.length) { return \"Cannot access column \" + col + \" - table row has \" + table.rows[row].cells.length + \" columns\"; }" + "table.rows[row].cells[col].textContent = '" + value + "';";
    ((JavascriptExecutor) webDriver).executeScript(script, table, row, column);
}
Also used : RealHtmlElementState(com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) WebElement(org.openqa.selenium.WebElement) RemoteWebElement(org.openqa.selenium.remote.RemoteWebElement) PublicAtsApi(com.axway.ats.common.PublicAtsApi)

Aggregations

RealHtmlElementState (com.axway.ats.uiengine.utilities.realbrowser.html.RealHtmlElementState)34 PublicAtsApi (com.axway.ats.common.PublicAtsApi)31 WebElement (org.openqa.selenium.WebElement)30 SeleniumOperationException (com.axway.ats.uiengine.exceptions.SeleniumOperationException)7 Select (org.openqa.selenium.support.ui.Select)6 JavascriptExecutor (org.openqa.selenium.JavascriptExecutor)4 Actions (org.openqa.selenium.interactions.Actions)4 RemoteWebElement (org.openqa.selenium.remote.RemoteWebElement)4 AbstractRealBrowserDriver (com.axway.ats.uiengine.AbstractRealBrowserDriver)2 NoSuchElementException (org.openqa.selenium.NoSuchElementException)2 RealHtmlAlert (com.axway.ats.uiengine.elements.html.realbrowser.RealHtmlAlert)1 RealHtmlConfirm (com.axway.ats.uiengine.elements.html.realbrowser.RealHtmlConfirm)1 RealHtmlPrompt (com.axway.ats.uiengine.elements.html.realbrowser.RealHtmlPrompt)1 VerificationException (com.axway.ats.uiengine.exceptions.VerificationException)1 VerifyEqualityException (com.axway.ats.uiengine.exceptions.VerifyEqualityException)1 VerifyNotEqualityException (com.axway.ats.uiengine.exceptions.VerifyNotEqualityException)1 ExpectedAlert (com.axway.ats.uiengine.internal.realbrowser.ExpectedAlert)1 ExpectedConfirm (com.axway.ats.uiengine.internal.realbrowser.ExpectedConfirm)1 ExpectedPrompt (com.axway.ats.uiengine.internal.realbrowser.ExpectedPrompt)1 IExpectedPopup (com.axway.ats.uiengine.internal.realbrowser.IExpectedPopup)1