List of usage examples for org.openqa.selenium Cookie getValue
public String getValue()
From source file:com.google.appengine.tck.login.UserLogin.java
License:Open Source License
public void login(@Observes EventContext<Before> event) throws Exception { Before before = event.getEvent();//from ww w . ja v a 2 s. c o m UserIsLoggedIn userIsLoggedIn = null; if (before.getTestMethod().isAnnotationPresent(UserIsLoggedIn.class)) { userIsLoggedIn = before.getTestMethod().getAnnotation(UserIsLoggedIn.class); } else if (before.getTestClass().isAnnotationPresent(UserIsLoggedIn.class)) { userIsLoggedIn = before.getTestClass().getAnnotation(UserIsLoggedIn.class); } if (userIsLoggedIn != null) { final URI baseUri = getBaseURI(before.getTestMethod()); final WebDriver driver = createWebDriver(); try { driver.manage().deleteAllCookies(); driver.navigate().to(baseUri + USER_LOGIN_SERVLET_PATH + "?location=" + URLEncoder.encode(userIsLoggedIn.location(), "UTF-8")); // did we navigate to this requested page, or did we get redirected/forwarded to login already List<WebElement> loginUrlElts = driver.findElements(By.id("login-url")); if (loginUrlElts.size() > 0) { String loginURL = loginUrlElts.get(0).getText(); // check if (isInternalLink(loginURL)) { loginURL = baseUri + loginURL; } // go-to login page driver.navigate().to(loginURL); } // find custom login handler, if exists LoginHandler loginHandler = TestBase.instance(getClass(), LoginHandler.class); if (loginHandler == null) { loginHandler = new DefaultLoginHandler(); } loginHandler.login(driver, new UserLoginContext(userIsLoggedIn)); // copy cookies Set<Cookie> cookies = driver.manage().getCookies(); for (Cookie cookie : cookies) { ModulesApi.addCookie(cookie.getName(), cookie.getValue()); } } finally { driver.close(); } } event.proceed(); }
From source file:com.hack23.cia.systemintegrationtest.UserPageVisit.java
License:Apache License
/** * Logout user./*www . j a v a 2 s .co m*/ * * @throws Exception * the exception */ public void logoutUser() throws Exception { final WebElement logoutButton = findButton("Logout"); assertNotNull("Expect to find a Logout Button", logoutButton); final Cookie cookie = driver.manage().getCookieNamed("JSESSIONID"); final String sessionId = cookie.getValue(); performClickAction(logoutButton); final WebElement body = driver.findElement(By.tagName("body")); body.sendKeys(Keys.ESCAPE); waitForBrowser(1000); driver.navigate().refresh(); waitForBrowser(2000); final Cookie newCookie = driver.manage().getCookieNamed("JSESSIONID"); final String newSessionId = newCookie.getValue(); assertNotEquals(sessionId, newSessionId); final String url = systemTestTargetUrl + "#!" + CommonsViews.MAIN_VIEW_NAME; assertEquals(browser, url, driver.getCurrentUrl()); }
From source file:com.jaeksoft.searchlib.crawler.web.browser.BrowserDriver.java
License:Open Source License
public List<CookieItem> getCookies() { Set<Cookie> cookies = driver.manage().getCookies(); if (CollectionUtils.isEmpty(cookies)) return null; List<CookieItem> cookieList = new ArrayList<CookieItem>(cookies.size()); for (Cookie cookie : cookies) { BasicClientCookie basicCookie = new BasicClientCookie(cookie.getName(), cookie.getValue()); basicCookie.setDomain(cookie.getDomain()); basicCookie.setExpiryDate(cookie.getExpiry()); basicCookie.setPath(cookie.getPath()); basicCookie.setSecure(cookie.isSecure()); cookieList.add(new CookieItem(basicCookie)); }//from ww w . ja v a 2s. c om return cookieList; }
From source file:com.lazerycode.ebselen.customhandlers.FileDownloader.java
License:Apache License
/** * Load in all the cookies WebDriver currently knows about so that we can mimic the browser cookie state * * @param seleniumCookieSet//from w ww.j a v a 2 s .c o m * @return */ private HttpState mimicCookieState(Set<org.openqa.selenium.Cookie> seleniumCookieSet) { HttpState mimicWebDriverCookieState = new HttpState(); for (org.openqa.selenium.Cookie seleniumCookie : seleniumCookieSet) { Cookie httpClientCookie = new Cookie(seleniumCookie.getDomain(), seleniumCookie.getName(), seleniumCookie.getValue(), seleniumCookie.getPath(), seleniumCookie.getExpiry(), seleniumCookie.isSecure()); mimicWebDriverCookieState.addCookie(httpClientCookie); } return mimicWebDriverCookieState; }
From source file:com.liferay.faces.bridge.test.integration.demo.JSFExportPDFPortletTester.java
License:Open Source License
@Test public void runJSFExportPDFPortletTest() throws IOException { // Test that the view contains links to all three pdfs. BrowserDriver browserDriver = getBrowserDriver(); browserDriver.navigateWindowTo(BridgeTestUtil.getDemoPageURL("jsf-pdf")); WaitingAsserter waitingAsserter = getWaitingAsserter(); waitingAsserter.assertElementDisplayed( "//td[contains(text(),'Green')]/preceding-sibling::td/a[contains(text(),'Export')]"); waitingAsserter.assertElementDisplayed( "//td[contains(text(),'Kessler')]/preceding-sibling::td/a[contains(text(),'Export')]"); String shearerPDFLinkXpath = "//td[contains(text(),'Shearer')]/preceding-sibling::td/a[contains(text(),'Export')]"; waitingAsserter.assertElementDisplayed(shearerPDFLinkXpath); // Test that the "Rich Shearer" link generates a PDF with the correct test. Note: since different browsers // and WebDriver implementations handle downloading files differently, download the file using a Java URL // connection. WebElement shearerPDFLinkElement = browserDriver.findElementByXpath(shearerPDFLinkXpath); String shearerPDFLink = shearerPDFLinkElement.getAttribute("href"); URL shearerPDFURL = new URL(shearerPDFLink); HttpURLConnection httpURLConnection = (HttpURLConnection) shearerPDFURL.openConnection(); httpURLConnection.setRequestMethod("GET"); Set<Cookie> cookies = browserDriver.getBrowserCookies(); String cookieString = ""; for (Cookie cookie : cookies) { cookieString += cookie.getName() + "=" + cookie.getValue() + ";"; }/*from w ww . j a va 2 s . c o m*/ httpURLConnection.addRequestProperty("Cookie", cookieString); InputStream inputStream = httpURLConnection.getInputStream(); // Compare the text of the PDFs rather than the files (via a hash such as md5) becuase the portlet generates // slightly different PDFs each time the link is clicked (CreationDate, ModDate, and Info 7 0 R/ID are // different each time). String shearerRichPDFText = getPDFText(inputStream); inputStream = JSFExportPDFPortletTester.class.getResourceAsStream("/Shearer-Rich.pdf"); String expectedShearerRichPDFText = getPDFText(inputStream); logger.info("Expected Shearer-Rich.pdf text:\n\n{}\nDownloaded Shearer-Rich.pdf text:\n\n{}", expectedShearerRichPDFText, shearerRichPDFText); Assert.assertEquals( "The downloaded Shearer-Rich.pdf file's text does not match the expected Shearer-Rich.pdf file's text.", expectedShearerRichPDFText, shearerRichPDFText); }
From source file:com.liferay.faces.bridge.test.integration.issue.primefaces.ExporterComponentsTestUtil.java
License:Open Source License
static void runDownloadUsersCSVFileTest(BrowserDriver browserDriver, String buttonId) throws IOException { // TECHNICAL NOTE: Since browsers handle file downloads differently, download files with a plain // HttpURLConnection in order to avoid handling each browser case. String buttonXpath = "//form/button[contains(@id,':" + buttonId + "')]"; browserDriver.waitForElementEnabled(buttonXpath); String formXpath = buttonXpath + "/.."; WebElement formElement = browserDriver.findElementByXpath(formXpath); String formActionURLString = formElement.getAttribute("action"); URL formActionURL = new URL(formActionURLString); HttpURLConnection httpURLConnection = (HttpURLConnection) formActionURL.openConnection(); InputStream inputStream = null; try {/* ww w. j a va 2 s.c o m*/ httpURLConnection.setRequestMethod("POST"); httpURLConnection.setUseCaches(false); httpURLConnection.setDoOutput(true); httpURLConnection.setDoInput(true); httpURLConnection.addRequestProperty("Accept", "text/csv"); // TECHNICAL NOTE: Add all cookies from the browser to the HttpURLConnection so that it can imitate the // session of the browser and access the test portlet and files. Set<Cookie> cookies = browserDriver.getBrowserCookies(); String cookieString = ""; for (Cookie cookie : cookies) { cookieString += cookie.getName() + "=" + cookie.getValue() + ";"; } httpURLConnection.addRequestProperty("Cookie", cookieString); // TECHNICAL NOTE: Add all input (and button) name, value pairs to the POST parameters of the // HttpURLConnection so that it can imitate the session of the browser and download the files. List<WebElement> namedElements = new ArrayList<WebElement>( browserDriver.findElementsByXpath(formXpath + "/input")); WebElement button = browserDriver.findElementByXpath(buttonXpath); namedElements.add(button); StringBuilder requestBuilder = new StringBuilder(); boolean first = true; for (WebElement namedElement : namedElements) { if (!first) { requestBuilder.append("&"); } String name = namedElement.getAttribute("name"); requestBuilder.append(URLEncoder.encode(name, "UTF-8")).append("="); String value = namedElement.getAttribute("value"); if (value != null) { requestBuilder.append(URLEncoder.encode(value, "UTF-8")); } first = false; } String requestString = requestBuilder.toString(); httpURLConnection.addRequestProperty("Content-Length", String.valueOf(requestString.length())); String enctype = formElement.getAttribute("enctype"); httpURLConnection.addRequestProperty("Content-Type", enctype); Writer writer = new OutputStreamWriter(httpURLConnection.getOutputStream(), "UTF-8"); writer.write(requestString); writer.flush(); Assert.assertEquals(HttpURLConnection.HTTP_OK, httpURLConnection.getResponseCode()); String contentDisposition = httpURLConnection.getHeaderField("Content-Disposition"); if (contentDisposition == null) { contentDisposition = httpURLConnection.getHeaderField("Content-disposition"); } if (contentDisposition == null) { contentDisposition = httpURLConnection.getHeaderField("content-disposition"); } String usersCSVFileName; if ((contentDisposition == null) && TestUtil.getContainer().startsWith("pluto")) { usersCSVFileName = buttonId + "Users.csv"; } else { usersCSVFileName = contentDisposition.replace("attachment;filename=", ""); } inputStream = httpURLConnection.getInputStream(); String downloadedUsersCSV = getContents(inputStream); httpURLConnection.disconnect(); logger.info("Expected " + EXPECTED_USERS_CSV_FILE_NAME + " text:\n\n{}\nDownloaded " + usersCSVFileName + " text:\n\n{}", EXPECTED_USERS_CSV, downloadedUsersCSV); Assert.assertEquals( "The downloaded " + usersCSVFileName + " file's text does not match the expected " + EXPECTED_USERS_CSV_FILE_NAME + " file's text.", EXPECTED_USERS_CSV, downloadedUsersCSV); } finally { ClosableUtil.close(inputStream); if (httpURLConnection != null) { httpURLConnection.disconnect(); } } }
From source file:com.machinepublishers.jbrowserdriver.diagnostics.Test.java
License:Apache License
private void doTests() { JBrowserDriver driver = null;/* w w w.j a v a2 s . c o m*/ Thread shutdownHook = null; try { HttpServer.launch(TEST_PORT_HTTP); final File cacheDir = Files.createTempDirectory("jbd_test_cache").toFile(); final File userDataDir = Files.createTempDirectory("jbd_test_userdata").toFile(); shutdownHook = new Thread(new Runnable() { @Override public void run() { FileUtils.deleteQuietly(cacheDir); FileUtils.deleteQuietly(userDataDir); } }); Runtime.getRuntime().addShutdownHook(shutdownHook); final String mainPage = "http://" + InetAddress.getLoopbackAddress().getHostAddress() + ":" + TEST_PORT_HTTP; final int ajaxWait = 150; final Settings.Builder builder = Settings.builder().processes(TEST_PORTS_RMI) .screen(new Dimension(1024, 768)).logger(null).logJavascript(true).ajaxWait(ajaxWait) .cacheDir(cacheDir).cache(true).ignoreDialogs(false); driver = new JBrowserDriver(builder.build()); /* * Load a page */ driver.get(mainPage); test(driver.getStatusCode() == 200); long initialRequestId = HttpServer.previousRequestId(); /* * Load page from cache */ driver.get(mainPage); test(driver.getStatusCode() == 200); test(HttpServer.previousRequestId() == initialRequestId); boolean viaHeader = false; for (String line : HttpServer.previousRequest()) { if (line.toLowerCase().startsWith("via:")) { viaHeader = true; break; } } test(!viaHeader); /* * Driver reset */ driver.reset(); driver.get(mainPage); test(driver.getStatusCode() == 200); test(HttpServer.previousRequestId() == initialRequestId); driver.reset(builder.cacheDir(null).build()); driver.get(mainPage); test(driver.getStatusCode() == 200); test(HttpServer.previousRequestId() != initialRequestId); /* * Javascript logs */ int messages = 0; for (LogEntry entry : driver.manage().logs().get("javascript").filter(Level.ALL)) { ++messages; test(!StringUtils.isEmpty(entry.getMessage())); } test(messages == 3); /* * User-data directory */ driver.findElement(By.id("populate-local-storage")).click(); driver.findElement(By.id("load-from-local-storage")).click(); test("test-value".equals(driver.findElement(By.id("local-storage-value-holder")).getText())); driver.get(mainPage); driver.findElement(By.id("load-from-local-storage")).click(); test("test-value".equals(driver.findElement(By.id("local-storage-value-holder")).getText())); driver.reset(); driver.get(mainPage); driver.findElement(By.id("load-from-local-storage")).click(); test("".equals(driver.findElement(By.id("local-storage-value-holder")).getText())); driver.reset(builder.userDataDirectory(userDataDir).build()); driver.get(mainPage); driver.findElement(By.id("populate-local-storage")).click(); driver.findElement(By.id("load-from-local-storage")).click(); test("test-value".equals(driver.findElement(By.id("local-storage-value-holder")).getText())); driver.reset(); driver.get(mainPage); driver.findElement(By.id("load-from-local-storage")).click(); test("test-value".equals(driver.findElement(By.id("local-storage-value-holder")).getText())); /* * Select DOM elements */ test("test-data-attr".equals(driver.findElement(By.id("divtext1")).getAttribute("data-selected"))); test(driver.findElement(By.id("divtext1")).getAttribute("undefinedattr") == null); test(driver.findElement(By.id("divtext1")).getAttribute("innerText").equals("test1")); test(driver.findElements(By.name("divs")).size() == 2); test(driver.findElements(By.name("divs")).get(1).getAttribute("innerText").equals("test2")); test(driver.findElementByClassName("divclass").getAttribute("id").equals("divtext1")); test(driver.findElementsByClassName("divclass").get(1).getAttribute("id").equals("divtext2")); test(driver.findElementByCssSelector("#divtext1").getAttribute("id").equals("divtext1")); test(driver.findElementsByCssSelector("html > *").get(1).getAttribute("id").equals("testbody")); test(driver.findElementById("divtext1").getTagName().equals("div")); test(driver.findElementsById("divtext1").get(0).getTagName().equals("div")); test(driver.findElementByLinkText("anchor").getAttribute("id").equals("anchor1")); test(driver.findElementsByLinkText("anchor").get(1).getAttribute("id").equals("anchor2")); test(driver.findElementByName("divs").getAttribute("id").equals("divtext1")); test(driver.findElementsByName("divs").get(1).getAttribute("id").equals("divtext2")); test(driver.findElementByPartialLinkText("anch").getAttribute("id").equals("anchor1")); test(driver.findElementsByPartialLinkText("anch").get(1).getAttribute("id").equals("anchor2")); test(driver.findElementByTagName("div").getAttribute("id").equals("divtext1")); test(driver.findElementsByTagName("div").get(1).getAttribute("id").equals("divtext2")); test(driver.findElementByXPath("//*[@id='divtext1']").getAttribute("id").equals("divtext1")); test(driver.findElementByTagName("body").findElement(By.xpath("//*[@id='divtext1']")).getAttribute("id") .equals("divtext1")); test(driver.findElementsByXPath("//html/*").get(1).getAttribute("id").equals("testbody")); test(driver.findElement(By.xpath("//a[contains(@href,'1')]")).getAttribute("id").equals("anchor1")); test(driver.findElementsByXPath("//a[contains(@href,'!!!')]").isEmpty()); test(driver.findElementsByClassName("xx").isEmpty()); test(driver.findElementsByTagName("xx").isEmpty()); test(driver.findElementsByCssSelector("#xx").isEmpty()); Throwable error = null; try { driver.findElementByTagName("xx"); } catch (NoSuchElementException e) { error = e; } test(error != null); error = null; try { driver.findElementByCssSelector("#xx"); } catch (NoSuchElementException e) { error = e; } test(error != null); error = null; try { driver.findElementsByXPath("!!!"); } catch (WebDriverException e) { error = e; } test(error != null); error = null; try { driver.findElement(By.id("divtext1")).findElements(By.cssSelector("???")); } catch (WebDriverException e) { error = e; } test(error != null); /* * WebElement Equals/HashCode */ test(driver.findElements(By.name("divs")).get(0).equals(driver.findElements(By.name("divs")).get(0))); test(driver.findElements(By.name("divs")).get(0).hashCode() == driver.findElements(By.name("divs")) .get(0).hashCode()); /* * Typing text */ driver.findElement(By.id("text-input")).sendKeys("testing"); driver.findElement(By.id("text-input")).sendKeys(""); test(driver.findElement(By.id("text-input")).getAttribute("value").equals("testing")); driver.findElement(By.id("text-input")).sendKeys(JBrowserDriver.KEYBOARD_DELETE); test(driver.findElement(By.id("text-input")).getAttribute("value") == null); driver.findElement(By.id("text-input")).sendKeys("testing"); test(driver.findElement(By.id("text-input")).getAttribute("value").equals("testing")); driver.findElement(By.id("text-input")).clear(); test(driver.findElement(By.id("text-input")).getAttribute("value") == null); /* * Clicking on elements */ test(!driver.findElement(By.id("testoption2")).isSelected()); driver.findElement(By.id("testoption2")).click(); test(driver.findElement(By.id("testoption2")).isSelected()); driver.findElement(By.id("testoption1")).click(); test(driver.findElement(By.id("testoption1")).isSelected()); driver.findElement(By.id("anchor5")).click(); test("anchor clicked".equals(driver.findElement(By.id("testspan")).getText())); /* * Execute javascript */ test(((WebElement) driver.executeScript("return arguments[0];", driver.findElement(By.id("divtext1")))) .getAttribute("innerText").equals("test1")); test(((WebElement) driver.executeScript("return arguments[0].parentNode;", driver.findElement(By.id("divtext1")))).getTagName().equals("body")); test(((WebElement) ((JavascriptExecutor) driver.findElement(By.id("divtext1"))) .executeAsyncScript("arguments[0](this);")).getAttribute("innerText").equals("test1")); test((driver.executeAsyncScript("arguments[1](arguments[0].innerText);", driver.findElement(By.id("divtext1")))).equals("test1")); Map<String, Object> map = (Map<String, Object>) driver.executeScript("return {" + "key1:['value1','value2','value3'], " + "key2:5," + "key3:function(){return 'testing';}, " + "key4:undefined, key5:null, key6:1/0, key7:0/0, key8:'', key9:[], key10:{}, key11:[{},{}]," + "key12:document.getElementById('divtext1'), " + "key13:document.getElementsByName('divs'), " + "key14:[document.getElementById('divtext1'),document.getElementsByName('divs'),{subkey1:'subval1'}]};"); test(map.size() == 14); test(((List) map.get("key1")).size() == 3); test(((List) map.get("key1")).get(2).equals("value3")); test(((List) map.get("key1")).get(2) instanceof String); test(map.get("key2").equals(new Long(5))); test("function () {return 'testing';}".equals(map.get("key3")) || "function (){return 'testing';}".equals(map.get("key3"))); test(map.get("key4") == null); test(map.get("key5") == null); test(Double.isInfinite(((Double) map.get("key6")).doubleValue())); test(Double.isNaN(((Double) map.get("key7")).doubleValue())); test("".equals(map.get("key8"))); test(map.get("key9") instanceof List); test(map.get("key10") instanceof Map); test(((List) map.get("key11")).size() == 2); test(((Map) ((List) map.get("key11")).get(1)).isEmpty()); test("test1".equals(((WebElement) map.get("key12")).getAttribute("innerText"))); test(((List<WebElement>) map.get("key13")).size() == 2); test(((List<WebElement>) map.get("key13")).get(1).getAttribute("innerText").equals("test2")); test(((List) map.get("key14")).size() == 3); test(((List) ((List) map.get("key14")).get(1)).size() == 2); test(((WebElement) ((List) ((List) map.get("key14")).get(1)).get(1)).getAttribute("innerText") .equals("test2")); test(((Map) ((List) map.get("key14")).get(2)).size() == 1); test("subval1".equals(((Map) ((List) map.get("key14")).get(2)).get("subkey1"))); test(((List) driver.executeScript("return [];")).isEmpty()); test(((Map) driver.executeScript("return {};")).isEmpty()); error = null; try { driver.executeScript("invalid.execute()"); } catch (WebDriverException e) { error = e; } test(error != null); /* * DOM element properties */ WebElement element = driver.findElement(By.id("divtext1")); Point point = element.getLocation(); test(point.getX() > 0); test(point.getY() > 0); Dimension dimension = element.getSize(); test(dimension.width > 0); test(dimension.height > 0); Rectangle rect = element.getRect(); test(rect.x == point.getX()); test(rect.y == point.getY()); test(rect.width == dimension.getWidth()); test(rect.height == dimension.getHeight()); test("Testing\ntext.".equals(driver.findElement(By.id("text-node1")).getText())); test("".equals(driver.findElement(By.id("text-node2")).getText())); test("".equals(driver.findElement(By.id("text-node3")).getText())); List<WebElement> options = driver.findElementsByCssSelector("#testselect option"); test(options.size() == 2); test(options.get(0).isSelected()); test(!options.get(1).isSelected()); test(driver.findElementById("checkbox1").isSelected()); test(!driver.findElementById("checkbox2").isSelected()); /* * Cookie manager */ driver.manage().addCookie(new Cookie("testname", "testvalue")); Cookie cookie = driver.manage().getCookieNamed("testname"); test(cookie.getValue().equals("testvalue")); test(InetAddress.getLoopbackAddress().getHostAddress().equals(cookie.getDomain())); /* * Screenshots */ test(driver.getScreenshotAs(OutputType.BYTES).length > 0); /* * File Input Type */ driver.findElement(By.id("upload")).sendKeys("some-file"); test("event-test".equals(driver.findElement(By.id("file-input-onchange")).getText())); test(driver.findElement(By.id("upload")).getAttribute("value").endsWith("some-file")); /* * Javascript alerts */ driver.findElement(By.tagName("button")).click(); test(driver.switchTo().alert().getText().equals("test-alert")); driver.switchTo().alert().dismiss(); test(driver.switchTo().alert().getText().equals("test-confirm")); driver.switchTo().alert().dismiss(); test(driver.switchTo().alert().getText().equals("test-prompt")); driver.switchTo().alert().sendKeys("test-input"); driver.switchTo().alert().accept(); test(driver.findElement(By.id("testspan")).getAttribute("innerHTML").equals("test-input")); /* * Request headers */ List<String> request = HttpServer.previousRequest(); if (TEST_PORT_HTTP != 443 && TEST_PORT_HTTP != 80) { test(request.get(1).endsWith(":" + TEST_PORT_HTTP)); } test(request.size() > 1); Set<String> headers = new HashSet<String>(); for (String line : request) { if (line.contains(":")) { headers.add(line.split(":")[0].toLowerCase()); } } test(request.size() - 2 == headers.size()); /* * HTTP Post */ driver.findElement(By.id("form-submit")).click(); test(driver.getStatusCode() == 201); test("form-field=test-form-value" .equals(HttpServer.previousRequest().get(HttpServer.previousRequest().size() - 1))); /* * Frames */ driver.switchTo().frame(driver.findElementByTagName("iframe")); test(driver.findElementById("iframebody") != null); driver.switchTo().parentFrame(); test(driver.findElementById("testbody") != null); driver.switchTo().frame(0); test(driver.findElementById("iframebody") != null); driver.switchTo().defaultContent(); driver.switchTo().frame("testiframe"); test(driver.findElementById("iframebody") != null); driver.get(mainPage); test(driver.getPageSource() != null); driver.switchTo().frame(driver.findElementByTagName("iframe")); test(driver.findElementById("iframebody") != null); driver.switchTo().parentFrame(); driver.findElement(By.id("anchor3")).click(); test(driver.getPageSource() != null); driver.switchTo().frame(driver.findElementByTagName("iframe")); driver.findElement(By.id("iframe-anchor")).click(); //TODO iframe coord offset needed on any other methods? driver.pageWait(); test(HttpServer.previousRequest().get(0).startsWith("GET /iframe.htm?param=fromiframe")); driver.get(mainPage); driver.switchTo().frame(driver.findElementByTagName("iframe")); Actions actions = new Actions(driver); actions.moveToElement(driver.findElement(By.id("iframe-anchor"))); actions.click(); actions.build().perform(); driver.pageWait(); test(HttpServer.previousRequest().get(0).startsWith("GET /iframe.htm?param=fromiframe")); driver.get(mainPage); driver.switchTo().frame(driver.findElementByTagName("iframe")); driver.getMouse().click(((Locatable) driver.findElement(By.id("iframe-anchor"))).getCoordinates()); driver.getMouse().mouseMove(((Locatable) driver.findElement(By.id("iframe-anchor"))).getCoordinates(), 5, 5); driver.pageWait(); test(HttpServer.previousRequest().get(0).startsWith("GET /iframe.htm?param=fromiframe")); //TODO fingerprinting //System.out.println(driver.findElement(By.id("iframe-useragent")).getAttribute("innerHTML")); //System.out.println(driver.findElement(By.id("iframe-nested-useragent")).getAttribute("innerHTML")); /* * Redirects and cookies */ driver.get(mainPage + "/redirect/site1#testfragment"); test(HttpServer.previousRequestId() != initialRequestId); test(driver.getStatusCode() == 200); test(driver.getCurrentUrl().endsWith("/redirect/site2#testfragment")); cookie = driver.manage().getCookieNamed("JSESSIONID"); test(cookie.getValue().equals("ABC123")); test(InetAddress.getLoopbackAddress().getHostAddress().equals(cookie.getDomain())); /* * Cookies set by Javascript */ test("jsCookieValue1".equals(driver.manage().getCookieNamed("jsCookieName1").getValue())); test("jsCookieValue2".equals(driver.manage().getCookieNamed("jsCookieName2").getValue())); test("jsCookieValue3".equals(driver.manage().getCookieNamed("jsCookieName3").getValue())); test("jsCookieValue4".equals(driver.manage().getCookieNamed("jsCookieName4").getValue())); /* * Window size and position */ driver.manage().window().setSize(new Dimension(5000, 5000)); test(driver.manage().window().getSize().getWidth() == 1024); test(driver.manage().window().getSize().getHeight() == 768); driver.manage().window().setSize(new Dimension(800, 600)); test(driver.manage().window().getSize().getWidth() == 800); test(driver.manage().window().getSize().getHeight() == 600); driver.manage().window().setPosition(new Point(5000, 5000)); test(driver.manage().window().getPosition().getX() == 224); test(driver.manage().window().getPosition().getY() == 168); driver.manage().window().setPosition(new Point(20, 50)); test(driver.manage().window().getPosition().getX() == 20); test(driver.manage().window().getPosition().getY() == 50); driver.manage().window().maximize(); test(driver.manage().window().getPosition().getX() == 0); test(driver.manage().window().getPosition().getY() == 0); test(driver.manage().window().getSize().getWidth() == 1024); test(driver.manage().window().getSize().getHeight() == 768); driver.manage().window().setSize(new Dimension(800, 600)); driver.manage().window().setPosition(new Point(20, 50)); driver.manage().window().fullscreen(); test(driver.manage().window().getPosition().getX() == 0); test(driver.manage().window().getPosition().getY() == 0); test(driver.manage().window().getSize().getWidth() == 1024); test(driver.manage().window().getSize().getHeight() == 768); driver.manage().window().fullscreen(); test(driver.manage().window().getPosition().getX() == 20); test(driver.manage().window().getPosition().getY() == 50); test(driver.manage().window().getSize().getWidth() == 800); test(driver.manage().window().getSize().getHeight() == 600); driver.manage().window().setSize(new Dimension(400, 200)); driver.manage().window().setPosition(new Point(10, 30)); test(driver.manage().window().getPosition().getX() == 10); test(driver.manage().window().getPosition().getY() == 30); test(driver.manage().window().getSize().getWidth() == 400); test(driver.manage().window().getSize().getHeight() == 200); driver.manage().window().setSize(new Dimension(1024, 768)); test(driver.manage().window().getPosition().getX() == 0); test(driver.manage().window().getPosition().getY() == 0); test(driver.manage().window().getSize().getWidth() == 1024); test(driver.manage().window().getSize().getHeight() == 768); /* * Element visibility */ test(driver.findElement(By.id("iframe-anchor")).isDisplayed()); test(!driver.findElement(By.id("anchor-visibility-hidden")).isDisplayed()); test(!driver.findElement(By.id("anchor-display-none")).isDisplayed()); error = null; try { driver.findElement(By.id("anchor-visibility-hidden")).click(); } catch (ElementNotVisibleException e) { error = e; } test(error != null); error = null; try { driver.findElement(By.id("anchor-display-none")).click(); } catch (ElementNotVisibleException e) { error = e; } test(error != null); /* * Operations on elements that no longer exist */ WebElement body = driver.findElement(By.tagName("body")); test(!StringUtils.isEmpty(body.getAttribute("outerHTML"))); driver.get("about:blank"); error = null; try { body.getAttribute("outerHTML"); } catch (StaleElementReferenceException e) { error = e; } test(error != null); /* * Timeouts */ driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.MILLISECONDS); error = null; try { driver.get(mainPage + "/wait-forever"); } catch (TimeoutException e) { error = e; } test(error != null); } catch (Throwable t) { outputError(testLabel("failed", curTest + 1, t)); } finally { try { driver.quit(); } catch (Throwable t) { outputError(toString(t)); } try { HttpServer.stop(); } catch (Throwable t) { outputError(toString(t)); } try { Runtime.getRuntime().removeShutdownHook(shutdownHook); shutdownHook.run(); } catch (Throwable t) { } } }
From source file:com.machinepublishers.jbrowserdriver.OptionsServer.java
License:Apache License
private org.apache.http.cookie.Cookie convert(Cookie in) { BasicClientCookie out = new BasicClientCookie(in.getName(), in.getValue()); String domainStr = null;// w ww . j av a 2s. c om if (StringUtils.isEmpty(in.getDomain())) { String urlStr = context.item().engine.get().getLocation(); try { URL url = new URL(urlStr); domainStr = url.getHost(); } catch (MalformedURLException e) { Matcher matcher = domain.matcher(urlStr); if (matcher.matches()) { domainStr = matcher.group(1); } } } out.setDomain(domainStr == null ? in.getDomain() : domainStr); if (in.getExpiry() != null) { out.setExpiryDate(in.getExpiry()); } out.setPath(in.getPath()); out.setSecure(in.isSecure()); out.setValue(in.getValue()); out.setVersion(1); return out; }
From source file:com.machinepublishers.jbrowserdriver.OptionsServer.java
License:Apache License
private static Cookie convert(org.apache.http.cookie.Cookie in) { return new Cookie(in.getName(), in.getValue(), in.getDomain(), in.getPath(), in.getExpiryDate(), in.isSecure());//from www . ja v a2s . c o m }
From source file:com.partnet.automation.HtmlView.java
License:Apache License
/** * Clicks, then handles the resulting alert. * <p>//from www . j ava2 s . c o m * This method uses the {@link HtmlView#clickElem(WebElement)} method. * * @param elm - element to be clicked * @param accept - true to accept alert, false to dismiss. * @param throwIfNoAlertPresent - true to throw exception if there is no alert present, false otherwise * @return the string of the alert message */ private String clickAndHandleAlert(WebElement elm, boolean accept, boolean throwIfNoAlertPresent) { String alertMsg = null; LOG.debug("{} alert created by clicking button {}", accept ? "accept" : "dismiss", elm); Browser browser = getBrowser(); // headless browsers need to inject javascript before the button is clicked // to handle the alert correctly if (browser.isHeadless()) { // webDriver.manage().deleteCookieNamed(ALERT_COOKIE_NAME); StringBuilder alertJs = new StringBuilder(); alertJs.append("window.alert = window.confirm = function(msg){ ") // .append( "var date = new Date();") // .append( "date.setDate(date.getDate() + 1);") // cookies don't like to store new lines. This becomes a problem when // taking a screenshot for HTMLUNIT, and // transferring the cookie to PhantomJs. // This prevents newlines from being injected into the cookie. Later // on, the return string containing these // newline keywords will be replaced with actual newlines. .append("msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, '" + ALERT_NEW_LINE_REPLACE + "');") .append("document.cookie = '" + ALERT_COOKIE_NAME + "=' + msg + '';").append("return %s;") .append("};"); executeScript(String.format(alertJs.toString(), accept)); } clickElem(elm); if (browser.isHeadless()) { Cookie alertCookie = webDriver.manage().getCookieNamed(ALERT_COOKIE_NAME); for (Cookie cook : webDriver.manage().getCookies()) { System.err.print(cook.getName()); } if (alertCookie != null) { // replace all newline keywords, to get original message alertMsg = StringUtils.trimToNull(alertCookie.getValue()); if (alertMsg != null) alertMsg = alertMsg.replaceAll(ALERT_NEW_LINE_REPLACE, "\n"); LOG.debug("Headless browser msg: {}", alertMsg); } else { LOG.debug("Cookie where headless alert messages are stored is null!"); } if (StringUtils.isBlank(alertMsg)) { if (throwIfNoAlertPresent) { throw new NoAlertPresentException( String.format("No alert message found for headless browser %s!", browser)); } } } else { Alert alert; // IE needs to wait for the alert to appear because we are using native // events try { if (browser.isInternetExplorer()) { alert = waitForAlertToBePresent(); } else { alert = webDriver.switchTo().alert(); } alertMsg = alert.getText(); if (accept) { alert.accept(); } else { alert.dismiss(); } } catch (NoAlertPresentException | TimeoutException e) { if (throwIfNoAlertPresent) { throw e; } else { LOG.debug("No alert is present! return..."); } return null; } } LOG.debug("{} alert message: {}", accept ? "Accepted" : "Dismissed", alertMsg); return alertMsg; }