Example usage for org.openqa.selenium WebDriver switchTo

List of usage examples for org.openqa.selenium WebDriver switchTo

Introduction

In this page you can find the example usage for org.openqa.selenium WebDriver switchTo.

Prototype

TargetLocator switchTo();

Source Link

Document

Send future commands to a different frame or window.

Usage

From source file:org.xframium.page.keyWord.step.spi.KWSBrowser.java

License:Open Source License

@Override
public boolean _executeStep(Page pageObject, WebDriver webDriver, Map<String, Object> contextMap,
        Map<String, PageData> dataMap, Map<String, Page> pageMap, SuiteContainer sC,
        ExecutionContextTest executionContext) throws Exception {

    if (getName().toUpperCase().startsWith(SwitchType.SWITCH_TO_ELEMENT.name)) {
        Element currentElement = getElement(pageObject, contextMap, webDriver, dataMap,
                getName().split("\\.")[1], executionContext);
        if (currentElement == null) {
            log.warn("Attempting to switch to frame identified by " + getName() + " that does not exist");
            return false;
        }/*from   w w w. j  a v a2 s  .  c o m*/

        WebElement nativeElement = (WebElement) currentElement.getNative();
        if (nativeElement instanceof MorelandWebElement)
            nativeElement = ((MorelandWebElement) nativeElement).getWebElement();
        webDriver.switchTo().frame(nativeElement);
    } else {
        switch (SwitchType.valueOf(getName().toUpperCase())) {
        case SWITCH_BY_TITLE:
            return verifySwitchWindow(webDriver, getName(), getParameterValue(getParameterList().get(0),
                    contextMap, dataMap, executionContext.getxFID()) + "");
        case SWITCH_BY_URL:
            return verifySwitchWindow(webDriver, getName(), getParameterValue(getParameterList().get(0),
                    contextMap, dataMap, executionContext.getxFID()) + "");

        case SWITCH_NAMED_FRAME:
            webDriver.switchTo().frame(getParameterValue(getParameterList().get(0), contextMap, dataMap,
                    executionContext.getxFID()) + "");
            break;
        case SWITCH_INDEX:
            webDriver.switchTo().frame(Integer.parseInt(getParameterValue(getParameterList().get(0), contextMap,
                    dataMap, executionContext.getxFID()) + ""));
            break;
        case PARENT_FRAME:
            webDriver.switchTo().parentFrame();
            break;
        case DEFAULT_FRAME:
            webDriver.switchTo().defaultContent();
            break;
        case CLOSE_WINDOW:
            webDriver.close();
            break;
        case NAVIGATE:
            if (isTimed())
                ((DeviceWebDriver) webDriver).getCloud().getCloudActionProvider()
                        .startTimer((DeviceWebDriver) webDriver, null, executionContext);

            webDriver.get(getParameterValue(getParameterList().get(0), contextMap, dataMap,
                    executionContext.getxFID()) + "");
            break;

        case MAXIMIZE:
            webDriver.manage().window().maximize();
            break;
        case GET_TITLE:
            String pageTitle = webDriver.getTitle();
            if (getParameterList().size() > 1) {
                String compareTo = getParameterValue(getParameterList().get(0), contextMap, dataMap,
                        executionContext.getxFID()) + "";
                if (!compareTo.equals(pageTitle)) {
                    throw new ScriptException(
                            "Expected Title of [" + compareTo + "] but received [" + pageTitle + "]");
                }
            }

            if (!validateData(pageTitle))
                throw new ScriptException("GET_TITLE Expected a format of [" + getValidationType() + "("
                        + getValidation() + ") for [" + pageTitle + "]");

            if (getContext() != null && !getContext().trim().isEmpty())
                contextMap.put(getContext(), pageTitle);

            break;

        case GET_URL:
            String currentUrl = webDriver.getCurrentUrl();
            if (getParameterList().size() > 1) {
                String compareTo = getParameterValue(getParameterList().get(0), contextMap, dataMap,
                        executionContext.getxFID()) + "";
                if (!compareTo.equals(currentUrl)) {
                    throw new ScriptException(
                            "Expected Title of [" + compareTo + "] but received [" + currentUrl + "]");
                }
            }

            if (!validateData(currentUrl))
                throw new ScriptException("GET_URL Expected a format of [" + getValidationType() + "("
                        + getValidation() + ") for [" + currentUrl + "]");

            if (getContext() != null && !getContext().trim().isEmpty())
                contextMap.put(getContext(), currentUrl);

            break;

        case BACK:
            if (isTimed())
                ((DeviceWebDriver) webDriver).getCloud().getCloudActionProvider()
                        .startTimer((DeviceWebDriver) webDriver, null, executionContext);
            webDriver.navigate().back();
            break;
        case FORWARD:
            if (isTimed())
                ((DeviceWebDriver) webDriver).getCloud().getCloudActionProvider()
                        .startTimer((DeviceWebDriver) webDriver, null, executionContext);
            webDriver.navigate().forward();
            break;
        case REFRESH:
            webDriver.navigate().refresh();
            break;
        case SWITCH_WIN_INDEX:
            int i = 0;
            int index = 0;
            if (getParameterList().size() < 2)
                index = 0;
            else
                index = Integer.valueOf(getParameterValue(getParameterList().get(1), contextMap, dataMap,
                        executionContext.getxFID()) + "");

            for (String handle : webDriver.getWindowHandles()) {
                if (i == index) {
                    webDriver.switchTo().window(handle);
                    break;
                }
                i += 1;
            }
            break;
        case ADD_COOKIE:
            Cookie addCookie = new Cookie(
                    getParameterValue(getParameterList().get(0), contextMap, dataMap,
                            executionContext.getxFID()) + "",
                    getParameterValue(getParameterList().get(1), contextMap, dataMap,
                            executionContext.getxFID()) + "");
            if (webDriver instanceof RemoteWebDriver)
                ((RemoteWebDriver) webDriver).manage().addCookie(addCookie);
            else if (webDriver instanceof NativeDriverProvider
                    && ((NativeDriverProvider) webDriver).getNativeDriver() instanceof RemoteWebDriver) {
                ((RemoteWebDriver) ((NativeDriverProvider) webDriver).getNativeDriver()).manage()
                        .addCookie(addCookie);
            }

            break;

        case DELETE_COOKIE:

            if (getParameterList().size() < 1) {
                if (webDriver instanceof RemoteWebDriver)
                    ((RemoteWebDriver) webDriver).manage().deleteAllCookies();
                else if (webDriver instanceof NativeDriverProvider
                        && ((NativeDriverProvider) webDriver).getNativeDriver() instanceof RemoteWebDriver) {
                    ((RemoteWebDriver) ((NativeDriverProvider) webDriver).getNativeDriver()).manage()
                            .deleteAllCookies();
                }
            } else {
                if (webDriver instanceof RemoteWebDriver)
                    ((RemoteWebDriver) webDriver).manage()
                            .deleteCookieNamed(getParameterValue(getParameterList().get(0), contextMap, dataMap,
                                    executionContext.getxFID()) + "");
                else if (webDriver instanceof NativeDriverProvider
                        && ((NativeDriverProvider) webDriver).getNativeDriver() instanceof RemoteWebDriver) {
                    ((RemoteWebDriver) ((NativeDriverProvider) webDriver).getNativeDriver()).manage()
                            .deleteCookieNamed(getParameterValue(getParameterList().get(0), contextMap, dataMap,
                                    executionContext.getxFID()) + "");
                }
            }
            break;

        case GET_COOKIE:

            if (getParameterList().size() < 1) {
                Set<Cookie> cookieSet = null;
                if (webDriver instanceof RemoteWebDriver)
                    cookieSet = ((RemoteWebDriver) webDriver).manage().getCookies();
                else if (webDriver instanceof NativeDriverProvider
                        && ((NativeDriverProvider) webDriver).getNativeDriver() instanceof RemoteWebDriver) {
                    cookieSet = ((RemoteWebDriver) ((NativeDriverProvider) webDriver).getNativeDriver())
                            .manage().getCookies();
                }

                StringBuilder buffer = new StringBuilder();
                for (Cookie cookie : cookieSet) {
                    buffer.append(cookie.getName() + ":" + cookie.getValue()).append(";");
                    if (getContext() != null) {
                        contextMap.put(getContext() + "_" + cookie.getName(), cookie.getValue());
                    }
                }
                String cookieValue = buffer.toString();
                if (!validateData(cookieValue)) {
                    throw new IllegalStateException("Get cookie Expected a format of [" + getValidationType()
                            + "(" + getValidation() + ") for [" + cookieValue + "]");
                }

                if (getContext() != null) {
                    contextMap.put(getContext(), cookieValue);
                }

            } else {
                Cookie getCookie = null;
                if (webDriver instanceof RemoteWebDriver)
                    getCookie = ((RemoteWebDriver) webDriver).manage()
                            .getCookieNamed(getParameterValue(getParameterList().get(0), contextMap, dataMap,
                                    executionContext.getxFID()) + "");
                else if (webDriver instanceof NativeDriverProvider
                        && ((NativeDriverProvider) webDriver).getNativeDriver() instanceof RemoteWebDriver)
                    getCookie = ((RemoteWebDriver) ((NativeDriverProvider) webDriver).getNativeDriver())
                            .manage().getCookieNamed(getParameterValue(getParameterList().get(0), contextMap,
                                    dataMap, executionContext.getxFID()) + "");

                if (!validateData(getCookie.getValue())) {
                    throw new IllegalStateException("Get cookie Expected a format of [" + getValidationType()
                            + "(" + getValidation() + ") for [" + getCookie.getValue() + "]");
                }

                if (getContext() != null) {
                    contextMap.put(getContext(), getCookie.getValue());
                }
            }

            break;

        case PAGE_DOWN:
            int pageDown = 1;
            if (getParameter("Page Count") != null)
                pageDown = Integer.parseInt(getParameterValue(getParameter("Page Count"), contextMap, dataMap,
                        executionContext.getxFID()));

            if (webDriver instanceof JavascriptExecutor)
                ((JavascriptExecutor) webDriver)
                        .executeScript("window.scrollBy( 0, (window.innerHeight * " + pageDown + "));");
            break;

        case PAGE_UP:
            int pageUp = 1;
            if (getParameter("Page Count") != null)
                pageUp = Integer.parseInt(getParameterValue(getParameter("Page Count"), contextMap, dataMap,
                        executionContext.getxFID()));

            if (webDriver instanceof JavascriptExecutor)
                ((JavascriptExecutor) webDriver)
                        .executeScript("window.scrollBy( 0, -(window.innerHeight * " + pageUp + "));");
            break;

        case SCROLL_DOWN:
            int scrollDown = 250;
            if (getParameter("Scroll Size") != null)
                scrollDown = Integer.parseInt(getParameterValue(getParameter("Scroll Size"), contextMap,
                        dataMap, executionContext.getxFID()));

            if (webDriver instanceof JavascriptExecutor)
                ((JavascriptExecutor) webDriver).executeScript("window.scrollBy( 0, " + scrollDown + ");");
            break;

        case SCROLL_UP:
            int scrollUp = 250;
            if (getParameter("Scroll Size") != null)
                scrollUp = Integer.parseInt(getParameterValue(getParameter("Scroll Size"), contextMap, dataMap,
                        executionContext.getxFID()));

            if (webDriver instanceof JavascriptExecutor)
                ((JavascriptExecutor) webDriver).executeScript("window.scrollBy( 0, -" + scrollUp + ");");
            break;

        default:

            throw new ScriptConfigurationException("Unknown Window Operation Type " + getName());
        }
    }

    return true;
}

From source file:org.xframium.page.keyWord.step.spi.KWSBrowser.java

License:Open Source License

/**
 * Verify switch window.// ww  w  .ja  v  a  2s .c  o m
 *
 * @param webDriver
 *            the web driver
 * @param byTitleOrUrl
 *            the by title or url
 * @param winExpValue
 *            the win exp value
 * @return true, if successful
 */
private boolean verifySwitchWindow(WebDriver webDriver, String byTitleOrUrl, String winExpValue) {

    boolean bSwitchWindow = false;
    String winActValue = "";
    Set<String> availableWindows = webDriver.getWindowHandles();

    if (!availableWindows.isEmpty()) {
        for (String windowId : availableWindows) {
            if (byTitleOrUrl.equalsIgnoreCase("SWITCH_BY_TITLE")) {
                winActValue = webDriver.switchTo().window(windowId).getTitle().trim().toLowerCase();
            } else {
                winActValue = webDriver.switchTo().window(windowId).getCurrentUrl().trim().toLowerCase();
            }

            winExpValue = winExpValue.trim().toLowerCase();

            if (winActValue.contains(winExpValue)) {
                bSwitchWindow = true;
                break;
            }
        }
    }

    return bSwitchWindow;
}

From source file:org.xframium.page.keyWord.step.spi.KWSWindow.java

License:Open Source License

@Override
public boolean _executeStep(Page pageObject, WebDriver webDriver, Map<String, Object> contextMap,
        Map<String, PageData> dataMap, Map<String, Page> pageMap) throws Exception {
    if (log.isDebugEnabled())
        log.debug("Execution Function " + getName());

    if (getParameterList().size() < 1)
        throw new IllegalArgumentException(
                "First Parameter Switchtype should be provided with values BY_WINTITLE| BY_WINURL|BY_FRAME|BY_PARENTFRAME|BY_DEFAULT");

    try {/* w w  w.  j  a va 2  s.com*/
        // Verify if the parameter-1 values are correct
        String switchType = getParameterValue(getParameterList().get(0), contextMap, dataMap) + "";
        String switchExpValue = "";

        switch (SwitchType.valueOf(switchType)) {
        case BY_WINTITLE:
            if (getParameterList().size() < 2)
                throw new IllegalArgumentException("Please provide the title for the window as a parameter");
            switchExpValue = getParameterValue(getParameterList().get(1), contextMap, dataMap) + "";
            return verifySwitchWindow(webDriver, switchType, switchExpValue);
        case BY_WINURL:
            if (getParameterList().size() < 2)
                throw new IllegalArgumentException("Please provide the URL for the window as a parameter");
            switchExpValue = getParameterValue(getParameterList().get(1), contextMap, dataMap) + "";
            return verifySwitchWindow(webDriver, switchType, switchExpValue);
        case BY_FRAME:
            if (getParameterList().size() < 2)
                throw new IllegalArgumentException("Please provide the Frame id for the Frame as a parameter");
            switchExpValue = getParameterValue(getParameterList().get(1), contextMap, dataMap) + "";
            webDriver.switchTo().frame(switchExpValue);
            break;

        case BY_PARENTFRAME:
            webDriver.switchTo().parentFrame();
            break;
        case BY_DEFAULT:
            webDriver.switchTo().defaultContent();
            break;
        case BY_WINCLOSE:
            webDriver.close();
            break;

        case BY_ELEMENT:
            Element currentElement = getElement(pageObject, contextMap, webDriver, dataMap);
            if (currentElement == null) {
                log.warn("Attempting to switch to frame identified by " + getName() + " that does not exist");
                return false;
            }

            WebElement nativeElement = (WebElement) currentElement.getNative();
            if (nativeElement instanceof MorelandWebElement)
                nativeElement = ((MorelandWebElement) nativeElement).getWebElement();
            webDriver.switchTo().frame(nativeElement);
            break;
        case BY_ALERT:
            WebDriverWait alertWait = new WebDriverWait(webDriver, 5);
            alertWait.until(ExpectedConditions.alertIsPresent());
            Alert alert = webDriver.switchTo().alert();
            alert.accept();
            break;
        case BY_MAXIMIZE:
            webDriver.manage().window().maximize();
            break;
        default:
            throw new IllegalArgumentException(
                    "Parameter switchtype should be BY_WINTITLE| BY_WINURL|BY_FRAME|BY_PARENTFRAME|BY_DEFAULT|BY_ALERT|BY_ELEMENT|BY_MAXIMIZE");
        }

    } catch (Exception e) {
        log.error("Error executing function for validation [" + getName() + "] on page [" + getPageName() + "]",
                e);
        return false;
    }

    return true;
}

From source file:org.xframium.page.keyWord.step.spi.KWSWindow.java

License:Open Source License

/**
 * Verify switch window./*from   ww w .j  ava 2 s  .  c  o  m*/
 *
 * @param webDriver the web driver
 * @param byTitleOrUrl the by title or url
 * @param winExpValue the win exp value
 * @return true, if successful
 */
private boolean verifySwitchWindow(WebDriver webDriver, String byTitleOrUrl, String winExpValue) {

    boolean bSwitchWindow = false;
    String winActValue = "";
    Set<String> availableWindows = webDriver.getWindowHandles();

    if (!availableWindows.isEmpty()) {
        for (String windowId : availableWindows) {
            if (byTitleOrUrl.equalsIgnoreCase("BY_WINTITLE")) {
                winActValue = webDriver.switchTo().window(windowId).getTitle().trim().toLowerCase();
            } else {
                winActValue = webDriver.switchTo().window(windowId).getCurrentUrl().trim().toLowerCase();
            }

            winExpValue = winExpValue.trim().toLowerCase();

            if (winActValue.contains(winExpValue)) {
                bSwitchWindow = true;
                break;
            }
        }
    }

    return bSwitchWindow;
}

From source file:org.xwiki.test.selenium.framework.AlbatrossSkinExecutor.java

License:Open Source License

private void sendKeysToTinyMCE(CharSequence keysToSend) {
    WebDriver driver = getDriver();
    String windowHandle = driver.getWindowHandle();
    try {// w ww.  j  a  v a  2 s .c  o m
        WebElement iframe = driver.findElement(By.className("mceEditorIframe"));
        driver.switchTo().frame(iframe).switchTo().activeElement().sendKeys(keysToSend);
    } finally {
        driver.switchTo().window(windowHandle);
    }
}

From source file:org.xwiki.test.ui.po.editor.wysiwyg.RichTextAreaElement.java

License:Open Source License

/**
 * @return the HTML element that has the focus in the Rich editor
 *///from  w ww.  ja v a2s .  co m
private WebElement getActiveElement() {
    // Switch to the iframe containing the rich text area content.
    //
    // Note: ATM this line doesn't work with Ghostdriver 1.0.3/PhantomJS 1.9, see
    // https://github.com/detro/ghostdriver/issues/226
    // Current workaround: WebDriver frameDriver = getDriver().switchTo().frame(1);
    WebDriver frameDriver = getDriver().switchTo().frame(iframe);

    // Select the locator allowing us to find the current active element (element with the focus).
    WebDriver.TargetLocator locator = frameDriver.switchTo();

    // Return the active element
    return locator.activeElement();
}

From source file:org.xwiki.test.ui.WebDriverFactory.java

License:Open Source License

public WebDriver createWebDriver(String browserName) {
    WebDriver driver;
    if (browserName.startsWith("*firefox")) {
        // Native events are disabled by default for Firefox on Linux as it may cause tests which open many windows
        // in parallel to be unreliable. However, native events work quite well otherwise and are essential for some
        // of the new actions of the Advanced User Interaction. We need native events to be enable especially for
        // testing the WYSIWYG editor. See http://code.google.com/p/selenium/issues/detail?id=2331 .
        FirefoxProfile profile = new FirefoxProfile();
        profile.setEnableNativeEvents(true);
        // Make sure Firefox doesn't upgrade automatically on CI agents.
        profile.setPreference("app.update.auto", false);
        profile.setPreference("app.update.enabled", false);
        profile.setPreference("app.update.silent", false);
        driver = new FirefoxDriver(profile);

        // Hide the Add-on bar (from the bottom of the window, with "WebDriver" written on the right) because it can
        // prevent buttons or links from being clicked when they are beneath it and native events are used.
        // See https://groups.google.com/forum/#!msg/selenium-users/gBozOynEjs8/XDxxQNmUSCsJ
        // We need to load a page before sending the keys otherwise WebDriver throws ElementNotVisible exception.
        driver.get("data:text/plain;charset=utf-8,XWiki");
        driver.switchTo().activeElement().sendKeys(Keys.chord(Keys.CONTROL, "/"));
    } else if (browserName.startsWith("*iexplore")) {
        driver = new InternetExplorerDriver();
    } else if (browserName.startsWith("*chrome")) {
        driver = new ChromeDriver();
    } else if (browserName.startsWith("*phantomjs")) {
        DesiredCapabilities capabilities = DesiredCapabilities.phantomjs();
        capabilities.setCapability("handlesAlerts", true);
        try {//from w  w w.j a v a 2  s  .  c o  m
            driver = new PhantomJSDriver(ResolvingPhantomJSDriverService.createDefaultService(), capabilities);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    } else {
        throw new RuntimeException("Unsupported browser name [" + browserName + "]");
    }

    // Maximize the browser window by default so that the page has a standard layout. Individual tests can resize
    // the browser window if they want to test how the page layout adapts to limited space. This reduces the
    // probability of a test failure caused by an unexpected layout (nested scroll bars, floating menu over links
    // and buttons and so on).
    driver.manage().window().maximize();

    return driver;
}

From source file:org.xwiki.test.wysiwyg.framework.AbstractWysiwygTestCase.java

License:Open Source License

/**
 * Selects the rich text area frame. Selectors are relative to the edited document after calling this method.
 *///w w  w  . ja va 2  s  . co m
public void selectRichTextAreaFrame() {
    WebDriver driver = getDriver();
    driver.switchTo().frame(driver.findElement(By.className("gwt-RichTextArea"))).switchTo().activeElement();
}

From source file:org.zanata.util.TestEventForScreenshotListener.java

License:Open Source License

private Optional<Alert> getAlert(WebDriver driver) {
    try {/*from w ww .  j  a  v a 2  s. c om*/
        return Optional.of(driver.switchTo().alert());
    } catch (NoAlertPresentException nape) {
        return Optional.empty();
    }
}

From source file:org.zanata.util.WebElementUtil.java

License:Open Source License

/**
 * This method is used to set JSF rich text editor (KCEditor) content.
 *
 * @param driver/*  w w  w .ja v  a 2  s.  co  m*/
 *            web driver
 * @param richEditorWrapperField
 *            the wrapper div of the editor
 * @param content
 *            content wants to set
 */
public static void setRichTextEditorContent(WebDriver driver, WebElement richEditorWrapperField,
        String content) {
    // This is how we can change JSF rich text editor content.
    WebElement richTextEditorFrame = richEditorWrapperField.findElement(By.tagName("iframe"));
    driver.switchTo().frame(richTextEditorFrame);
    ((JavascriptExecutor) driver).executeScript("document.body.innerHTML='" + content + "'");
    driver.switchTo().defaultContent();
}