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:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocumentWriteTest.java

License:Apache License

/**
 * Partial regression test for bug 2921851: use opener URL as base URL
 * for resolution of relative URLs in document.write.
 * @throws Exception if the test fails/*from w  w  w  .  j a  v  a  2  s .c  o  m*/
 */
@Test
public void urlResolutionInWriteForm() throws Exception {
    final String html = "<html><head>" + "<script>" + "function test() {"
            + "  var newWin = window.open('', 'myPopup', '');" + "  var d = newWin.document;"
            + "  d.write('<html><body><form action=foo method=post><input type=submit id=it></form></body></html>');"
            + "  d.close();\n" + "}\n" + "</script></head>" + "<body onload='test()'>" + "</body></html>";

    getMockWebConnection().setDefaultResponse("");
    final WebDriver driver = loadPage2(html);
    driver.switchTo().window("myPopup");
    driver.findElement(By.id("it")).click();

    assertEquals(new URL(getDefaultUrl(), "foo"), getMockWebConnection().getLastWebRequest().getUrl());
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement2Test.java

License:Apache License

/**
 * @throws Exception if the test fails/*from w ww  . ja va 2 s  .co  m*/
 */
@Test
@Alerts(DEFAULT = { "body1", "setActive not available" }, IE = { "body1", "text1", "[object HTMLButtonElement]",
        "text2", "[object Window]", "onfocus text2" })
@BuggyWebDriver(IE)
// alert conflicts with focus/blur
@NotYetImplemented
public void setActiveAndFocus() throws Exception {
    final String firstHtml = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html>\n" + "<head>\n"
            + "  <title>First</title>\n" + "  <script>var win2;</script>\n" + "</head>\n"
            + "<body id='body1' onload='alert(document.activeElement.id)'>\n" + "<form name='form1'>\n"
            + "  <input id='text1' onfocus='alert(\"onfocus text1\"); win2.focus();'>\n"
            + "  <button id='button1' onClick='win2=window.open(\"" + URL_SECOND
            + "\", \"second\");'>Click me</a>\n" + "</form>\n" + "</body></html>";

    final String secondHtml = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html>\n" + "<head>\n"
            + "  <title>Second</title>\n" + "</head>\n" + "<body id='body2'>\n"
            + "  <input id='text2' onfocus='alert(\"onfocus text2\")'>\n"
            + "  <button id='button2' onClick='doTest();'>Click me</a>\n" + "  <script>\n"
            + "    function doTest() {\n" + "      var elem = opener.document.getElementById('text1');\n"
            + "      alert(opener.document.activeElement.id);\n"
            + "      if (!elem.setActive) { alert('setActive not available'); return; }\n"
            + "      elem.setActive();\n" + "      alert(opener.document.activeElement.id);\n"
            + "      alert(document.activeElement);\n" + "      document.getElementById('text2').setActive();\n"
            + "      alert(document.activeElement.id);\n" + "      alert(opener);\n" + "      opener.focus();\n"
            + "    }\n" + "  </script>\n" + "</body></html>";
    getMockWebConnection().setResponse(URL_SECOND, secondHtml);

    final WebDriver driver = loadPage2(firstHtml);
    verifyAlerts(driver, "body1");
    assertEquals("First", driver.getTitle());

    driver.findElement(By.id("button1")).click();
    driver.switchTo().window("second");
    verifyAlerts(driver, "body1");
    assertEquals("Second", driver.getTitle());

    driver.findElement(By.id("button2")).click();
    verifyAlerts(driver, getExpectedAlerts());
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLFormElementTest.java

License:Apache License

/**
 * @throws Exception if the test fails/*from w ww. j  a v  a2  s  . c o  m*/
 */
@Test
@Alerts("foo1")
public void targetChangedAfterSubmitCall() throws Exception {
    final String html = "<html><head><script>\n" + "function test() {\n" + "  var f = document.forms[0];\n"
            + "  f.submit();\n" + "  f.target = 'foo2';\n" + "}\n" + "</script></head><body>\n"
            + "<form action='page1.html' name='myForm' target='foo1'>\n"
            + "  <input name='myField' value='some value'>\n" + "</form>\n"
            + "<div id='clickMe' onclick='test()'>click me</div></body></html>";

    getMockWebConnection().setDefaultResponse("<html><head><script>alert(window.name)</script></head></html>");
    final WebDriver driver = loadPage2(html);
    driver.findElement(By.id("clickMe")).click();

    try {
        driver.switchTo().window("foo2");
        fail("Window foo2 found");
    } catch (final NoSuchWindowException e) {
        // ok
    }
    driver.switchTo().window("foo1");

    verifyAlerts(driver, getExpectedAlerts());
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLFrameElement2Test.java

License:Apache License

/**
 * @throws Exception if the test fails/*from  w w  w.ja va2 s  .c om*/
 */
@Test
@Alerts({ "OnloadTest", "header -> content -> frameSet", "content\nClick for new frame content with onload",
        "header -> content -> frameSet -> onloadFrame", "onloadFrame\nNew content loaded..." })
@NotYetImplemented
public void windowLocationReplaceOnload() throws Exception {
    final String html = "<html><head><title>OnloadTest</title></head>\n"
            + "<frameset rows='50,*' onLoad=\"top.header.addToFrameOrder('frameSet');\">\n"
            + "  <frame name='header' src='header.html'>\n" + "  <frame name='content' id='content' "
            + "src=\"javascript:window.location.replace('content.html')\">\n" + "</frameset>\n" + "</html>";

    final String headerFrame = "<html><head><title>headerFrame</title></head>\n"
            + "<script type='text/javascript'>\n" + "  function addToFrameOrder(frame) {\n"
            + "    var spacer = ' -> ';\n"
            + "    var frameOrder = document.getElementById('frameOrder').innerHTML;\n"
            + "    if (frameOrder == '') {spacer = '';}\n"
            + "    document.getElementById('frameOrder').innerHTML = frameOrder + spacer + frame;\n" + "  }\n"
            + "</script>\n" + "<body onload=\"addToFrameOrder('header');\">\n"
            + "  <div id=\"frameOrder\"></div>\n" + "</body></html>";

    final String contentFrame = "<html><head><title>contentFrame</title></head>\n"
            + "<body onload=\"top.header.addToFrameOrder('content');\">\n" + "  <h3>content</h3>\n"
            + "  <a name='onloadFrameAnchor' href='onload.html' "
            + "target='content'>Click for new frame content with onload</a>\n" + "</body></html>";

    final String onloadFrame = "<html><head><title>onloadFrame</title></head>\n"
            + "<body onload=\"alert('Onload alert.');top.header.addToFrameOrder('onloadFrame');\">\n"
            + "  <script type='text/javascript'>\n" + "    alert('Body alert.');\n" + "  </script>\n"
            + "  <h3>onloadFrame</h3>\n" + "  <p id='newContent'>New content loaded...</p>\n"
            + "</body></html>";

    getMockWebConnection().setResponse(new URL(URL_FIRST, "header.html"), headerFrame);
    getMockWebConnection().setResponse(new URL(URL_FIRST, "content.html"), contentFrame);
    getMockWebConnection().setResponse(new URL(URL_FIRST, "onload.html"), onloadFrame);

    final WebDriver driver = loadPage2(html);
    // top frame
    assertEquals(getExpectedAlerts()[0], driver.getTitle());

    // header frame
    driver.switchTo().frame("header");
    assertEquals(getExpectedAlerts()[1], driver.findElement(By.id("frameOrder")).getText());

    // content frame
    driver.switchTo().defaultContent();
    driver.switchTo().frame("content");
    assertEquals(getExpectedAlerts()[2], driver.findElement(By.tagName("body")).getText());

    driver.findElement(By.name("onloadFrameAnchor")).click();
    final boolean ie = getBrowserVersion().isIE();
    verifyAlerts(driver, "Body alert.");
    if (!ie) {
        verifyAlerts(driver, "Onload alert.");
    }
    driver.switchTo().defaultContent();
    if (ie) {
        verifyAlerts(driver, "Onload alert.");
    }
    driver.switchTo().frame("header");
    assertEquals(getExpectedAlerts()[3], driver.findElement(By.id("frameOrder")).getText());

    driver.switchTo().defaultContent();
    driver.switchTo().frame("content");
    assertEquals(getExpectedAlerts()[4], driver.findElement(By.tagName("body")).getText());
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLFrameElement2Test.java

License:Apache License

/**
 * @throws Exception if the test fails//from  ww w .ja va 2s .  co  m
 */
@Test
@Alerts({ "OnloadTest", "header -> content -> frameSet", "content\nClick for new frame content with onload",
        "header -> content -> frameSet -> onloadFrame", "onloadFrame\nNew content loaded..." })
@NotYetImplemented
public void windowLocationAssignOnload() throws Exception {
    final String html = "<html><head><title>OnloadTest</title></head>\n"
            + "<frameset rows='50,*' onLoad=\"top.header.addToFrameOrder('frameSet');\">\n"
            + "  <frame name='header' src='header.html'>\n" + "  <frame name='content' id='content' "
            + "src=\"javascript:window.location.assign('content.html')\">\n" + "</frameset>\n" + "</html>";

    final String headerFrame = "<html><head><title>headerFrame</title></head>\n"
            + "<script type='text/javascript'>\n" + "  function addToFrameOrder(frame) {\n"
            + "    var spacer = ' -> ';\n"
            + "    var frameOrder = document.getElementById('frameOrder').innerHTML;\n"
            + "    if (frameOrder == '') {spacer = '';}\n"
            + "    document.getElementById('frameOrder').innerHTML = frameOrder + spacer + frame;\n" + "  }\n"
            + "</script>\n" + "<body onload=\"addToFrameOrder('header');\">\n"
            + "  <div id='frameOrder'></div>\n" + "</body></html>";

    final String contentFrame = "<html><head><title>contentFrame</title></head>\n"
            + "<body onload=\"top.header.addToFrameOrder('content');\">\n" + "  <h3>content</h3>\n"
            + "  <a name='onloadFrameAnchor' href='onload.html' "
            + "target='content'>Click for new frame content with onload</a>\n" + "</body></html>";

    final String onloadFrame = "<html><head><title>onloadFrame</title></head>\n"
            + "<body onload=\"alert('Onload alert.');top.header.addToFrameOrder('onloadFrame');\">\n"
            + "  <script type='text/javascript'>\n" + "    alert('Body alert.');\n" + "  </script>\n"
            + "  <h3>onloadFrame</h3>\n" + "  <p id='newContent'>New content loaded...</p>\n"
            + "</body></html>";

    getMockWebConnection().setResponse(new URL(URL_FIRST, "header.html"), headerFrame);
    getMockWebConnection().setResponse(new URL(URL_FIRST, "content.html"), contentFrame);
    getMockWebConnection().setResponse(new URL(URL_FIRST, "onload.html"), onloadFrame);

    final WebDriver driver = loadPage2(html);
    // top frame
    assertEquals(getExpectedAlerts()[0], driver.getTitle());

    // header frame
    driver.switchTo().frame("header");
    assertEquals(getExpectedAlerts()[1], driver.findElement(By.id("frameOrder")).getText());

    // content frame
    driver.switchTo().defaultContent();
    driver.switchTo().frame("content");
    assertEquals(getExpectedAlerts()[2], driver.findElement(By.tagName("body")).getText());

    driver.findElement(By.name("onloadFrameAnchor")).click();
    final boolean ie = getBrowserVersion().isIE();
    verifyAlerts(driver, "Body alert.");
    if (!ie) {
        verifyAlerts(driver, "Onload alert.");
    }
    driver.switchTo().defaultContent();
    if (ie) {
        verifyAlerts(driver, "Onload alert.");
    }
    driver.switchTo().frame("header");
    assertEquals(getExpectedAlerts()[3], driver.findElement(By.id("frameOrder")).getText());

    driver.switchTo().defaultContent();
    driver.switchTo().frame("content");
    assertEquals(getExpectedAlerts()[4], driver.findElement(By.tagName("body")).getText());
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLFrameElement2Test.java

License:Apache License

/**
 * @throws Exception if the test fails/*from  ww w  .java  2  s  .  c o  m*/
 */
@Test
@Alerts({ "OnloadTest", "header -> content -> frameSet", "content\nClick for new frame content with onload",
        "header -> content -> frameSet -> onloadFrame", "onloadFrame\nNew content loaded..." })
@NotYetImplemented
public void windowLocationSetOnload() throws Exception {
    final String html = "<html><head><title>OnloadTest</title></head>\n"
            + "<frameset rows='50,*' onLoad=\"top.header.addToFrameOrder('frameSet');\">\n"
            + "  <frame name='header' src='header.html'>\n" + "  <frame name='content' id='content' "
            + "src=\"javascript:window.location='content.html'\">\n" + "</frameset>\n" + "</html>";

    final String headerFrame = "<html><head><title>headerFrame</title></head>\n"
            + "<script type='text/javascript'>\n" + "  function addToFrameOrder(frame) {\n"
            + "    var spacer = ' -> ';\n"
            + "    var frameOrder = document.getElementById('frameOrder').innerHTML;\n"
            + "    if (frameOrder == '') {spacer = '';}\n"
            + "    document.getElementById('frameOrder').innerHTML = frameOrder + spacer + frame;\n" + "  }\n"
            + "</script>\n" + "<body onload=\"addToFrameOrder('header');\">\n"
            + "  <div id='frameOrder'></div>\n" + "</body></html>";

    final String contentFrame = "<html><head><title>contentFrame</title></head>\n"
            + "<body onload=\"top.header.addToFrameOrder('content');\">\n" + "  <h3>content</h3>\n"
            + "  <a name='onloadFrameAnchor' href='onload.html' "
            + "target='content'>Click for new frame content with onload</a>\n" + "</body></html>";

    final String onloadFrame = "<html><head><title>onloadFrame</title></head>\n"
            + "<body onload=\"alert('Onload alert.');top.header.addToFrameOrder('onloadFrame');\">\n"
            + "  <script type='text/javascript'>\n" + "    alert('Body alert.');\n" + "  </script>\n"
            + "  <h3>onloadFrame</h3>\n" + "  <p id='newContent'>New content loaded...</p>\n"
            + "</body></html>";

    getMockWebConnection().setResponse(new URL(URL_FIRST, "header.html"), headerFrame);
    getMockWebConnection().setResponse(new URL(URL_FIRST, "content.html"), contentFrame);
    getMockWebConnection().setResponse(new URL(URL_FIRST, "onload.html"), onloadFrame);

    final WebDriver driver = loadPage2(html);
    // top frame
    assertEquals(getExpectedAlerts()[0], driver.getTitle());

    // header frame
    driver.switchTo().frame("header");
    assertEquals(getExpectedAlerts()[1], driver.findElement(By.id("frameOrder")).getText());

    // content frame
    driver.switchTo().defaultContent();
    driver.switchTo().frame("content");
    assertEquals(getExpectedAlerts()[2], driver.findElement(By.tagName("body")).getText());

    if (StringUtils.isNotEmpty(getExpectedAlerts()[2])) {
        driver.findElement(By.name("onloadFrameAnchor")).click();
        driver.switchTo().defaultContent();
        driver.switchTo().frame("header");
        assertEquals(getExpectedAlerts()[3], driver.findElement(By.id("frameOrder")).getText());

        driver.switchTo().defaultContent();
        driver.switchTo().frame("content");
        assertEquals(getExpectedAlerts()[4], driver.findElement(By.tagName("body")).getText());
    }
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLIFrameElement3Test.java

License:Apache License

/**
 * Regression test for bug 2940926.//from   www . j a v a2s .c  o m
 * @throws Exception if an error occurs
 */
@Test
@Alerts("foo")
public void settingInnerHtmlTriggersFrameLoad() throws Exception {
    final String html = "<!DOCTYPE html>\n"
            + "<html><body><div id='d' onclick='loadFrame()'>Click me to show frame</div><script>\n"
            + "function loadFrame() {\n" + "  var s = '<iframe id=\"i\" src=\"frame.html\">';\n"
            + "  s += '<p>Your browser does not support frames</p>';\n" + "  s += '</iframe>';\n"
            + "  var d = document.getElementById('d');\n" + "  d.innerHTML = s;\n" + "}\n"
            + "</script></body></html>";
    final String html2 = "<html><body>foo</body></html>";

    final MockWebConnection conn = getMockWebConnection();
    conn.setResponse(new URL(URL_FIRST, "frame.html"), html2);

    final WebDriver driver = loadPage2(html);

    driver.findElement(By.id("d")).click();

    driver.switchTo().frame("i");
    final String content = driver.findElement(By.xpath("//html/body")).getText();
    assertEquals(getExpectedAlerts()[0], content);
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLIFrameElement3Test.java

License:Apache License

/**
 * @throws Exception if the test fails/*from  www . ja  va 2 s .c o  m*/
 */
@Test
@Alerts("something")
public void window() throws Exception {
    final String html = "<!DOCTYPE html>\n" + "<html><head><title>First</title><script>\n"
            + "function test() {\n" + "  var iframe = document.getElementById('myIFrame');\n"
            + "  iframe.contentWindow.contents = 'something';\n"
            + "  iframe.src = 'javascript:window[\\'contents\\']';\n" + "}\n</script></head>\n"
            + "<body onload='test()'>\n" + "<iframe id='myIFrame' src='about:blank'></iframe></body></html>";

    final WebDriver driver = loadPage2(html);

    driver.switchTo().frame(0);
    final String content = driver.findElement(By.xpath("//html/body")).getText();
    assertEquals(getExpectedAlerts()[0], content);
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLIFrameElement3Test.java

License:Apache License

/**
 * @throws Exception if the test fails/* ww w  .  ja  va2  s.co  m*/
 */
@Test
@Alerts("something")
public void settingSrc() throws Exception {
    final String html = "<!DOCTYPE html>\n" + "<html><head><title>First</title><script>\n"
            + "function test() {\n" + "  var iframe = document.createElement('iframe');\n"
            + "  var content = 'something';\n" + "  iframe.src = 'about:blank';\n"
            + "  document.body.appendChild(iframe);\n"
            + "  iframe.contentWindow.document.open('text/html', 'replace');\n"
            + "  iframe.contentWindow.document.write(content);\n" + "  iframe.contentWindow.document.close();\n"
            + "}\n</script></head>\n" + "<body onload='test()'></body></html>";

    final WebDriver driver = loadPage2(html);

    driver.switchTo().frame(0);
    final String content = driver.findElement(By.xpath("//html/body")).getText();
    assertEquals(getExpectedAlerts()[0], content);
}

From source file:com.gargoylesoftware.htmlunit.javascript.host.html.HTMLIFrameElement3Test.java

License:Apache License

/**
 * @throws Exception if the test fails//w w w  .j av  a 2s . c o m
 */
@Test
@Alerts({ "[object Window]", "topbody", "framebody", "[object Window]", "frame", "frameinput" })
@Ignore
// check expectations
public void contentWindowAndActiveElement() throws Exception {
    final String firstContent = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html>\n" + "<head>\n" + "  <script>\n"
            + "    function check() {\n" + "      alert(document.getElementById('frame').contentWindow);\n"
            + "      alert(document.activeElement.id);\n"
            + "      alert(window.frame.window.document.activeElement.id);\n" + "    }\n" + "  </script>\n"
            + "</head>\n" + "<body id='topbody'>\n" + "  <iframe id='frame' name='frame' src='" + URL_SECOND
            + "'></iframe>\n" + "</body></html>";

    final String frameContent = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html>\n" + "<body id='framebody'>\n"
            + "  <input id='frameinput'>\n" + "</body></html>";

    final String[] alerts = getExpectedAlerts();
    int i = 0;

    final MockWebConnection webConnection = getMockWebConnection();

    webConnection.setResponse(URL_SECOND, frameContent);

    final WebDriver driver = loadPage2(firstContent);
    final JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;

    jsExecutor.executeScript("check();");
    verifyAlerts(driver, alerts[i++], alerts[i++], alerts[i++]);

    driver.switchTo().frame("frame");
    driver.findElement(By.id("frameinput")).click();

    driver.switchTo().defaultContent();
    jsExecutor.executeScript("check();");
    verifyAlerts(driver, alerts[i++], alerts[i++], alerts[i++]);
}