List of usage examples for org.openqa.selenium WebDriver switchTo
TargetLocator switchTo();
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++]); }