List of usage examples for org.openqa.selenium.remote RemoteWebDriver getCurrentUrl
@Override
public String getCurrentUrl()
From source file:com.comcast.dawg.house.LoginPageIT.java
License:Apache License
/** * @author Kevin Pearson//from w w w . j av a 2s.com * @throws IOException */ @Test(description = "Tests if a user can input a user name and click enter to log in", groups = "uitest") public void testLogin() throws IOException { String user = "integrationuser"; RemoteWebDriver driver = drivers.get(); driver.get(TestServers.getHouse()); loginWithUserName(driver, user); String expectedNewPageUrl = TestServers.getHouse() + user + "/"; Assert.assertEquals(driver.getCurrentUrl(), expectedNewPageUrl); WebElement userInfo = driver.findElementByClassName(IndexPage.USER_SECTION_CLASS); List<WebElement> spans = userInfo.findElements(By.tagName(Tag.SPAN.toString())); Assert.assertFalse(spans.isEmpty()); WebElement userDisplaySpan = spans.get(0); // the first span should show the user name Assert.assertEquals(userDisplaySpan.getText(), user); }
From source file:com.comcast.dawg.house.LoginPageIT.java
License:Apache License
/** * @author Kevin Pearson//w ww . j a va2 s .c o m * @throws IOException */ @Test(description = "Tests if a message explaining that a username was invalid " + "becomes visible when the user tries to log in with an invalid username", groups = "uitest") public void testBadLogin() throws IOException { RemoteWebDriver driver = drivers.get(); String user = "$$$$"; driver.get(TestServers.getHouse()); WebElement badLoginMessage = driver.findElementById(LoginPage.BAD_USER_MSG_ID); Assert.assertEquals(badLoginMessage.getCssValue("display"), "none"); loginWithUserName(driver, user); String expectedNewPageUrl = TestServers.getHouse(); Assert.assertEquals(driver.getCurrentUrl(), expectedNewPageUrl); badLoginMessage = driver.findElementById(LoginPage.BAD_USER_MSG_ID); Assert.assertEquals(badLoginMessage.getCssValue("display"), "block"); }
From source file:com.screenslicer.core.scrape.Proceed.java
License:Open Source License
public static String perform(RemoteWebDriver driver, int pageNum, String priorTextLabel) throws End, ActionFailed { try {//from w w w. ja v a 2s. co m Element body = Util.openElement(driver, null, null, null); String origSrc = driver.getPageSource(); String origTitle = driver.getTitle(); String origUrl = driver.getCurrentUrl(); Context context = perform(body, pageNum, priorTextLabel); if (context != null && context.node != null) { WebElement element = Util.toElement(driver, context.node); if (element != null) { boolean success = Util.click(driver, element); if (success) { Util.driverSleepLong(); String newSource = driver.getPageSource(); String newTitle = driver.getTitle(); String newUrl = driver.getCurrentUrl(); if (origSrc.hashCode() != newSource.hashCode() || !origTitle.equals(newTitle) || !origUrl.equals(newUrl)) { return context.textLabel; } } } } } catch (Throwable t) { Log.exception(t); } throw new End(); }
From source file:com.screenslicer.core.scrape.ProcessPage.java
License:Open Source License
public static List<Result> perform(RemoteWebDriver driver, int page, String query, String[] whitelist, String[] patterns, UrlTransform[] transforms) throws ActionFailed { try {//from w ww.j a v a 2s . c om Element element = Util.openElement(driver, whitelist, patterns, transforms); trim(element); if (WebApp.DEBUG) { try { FileUtils.writeStringToFile(new File("./" + System.currentTimeMillis()), element.outerHtml()); } catch (IOException e) { } } Map<String, Object> cache = new HashMap<String, Object>(); List<Result> results = perform(element, page, query, driver.getCurrentUrl(), true, cache); if (results == null || results.isEmpty()) { results = perform(element, page, query, driver.getCurrentUrl(), false, cache); } return results; } catch (Throwable t) { Log.exception(t); throw new ActionFailed(t); } }
From source file:com.screenslicer.core.scrape.QueryKeyword.java
License:Open Source License
private static String doSearch(RemoteWebDriver driver, List<WebElement> searchBoxes, String searchQuery) throws ActionFailed { try {/* w w w . j a v a2 s . c o m*/ for (WebElement element : searchBoxes) { try { Util.click(driver, element); element.clear(); Util.driverSleepVeryShort(); if (!CommonUtil.isEmpty(element.getAttribute("value"))) { element.sendKeys(delete); Util.driverSleepVeryShort(); } element.sendKeys(searchQuery); Util.driverSleepVeryShort(); String beforeSource = driver.getPageSource(); String beforeTitle = driver.getTitle(); String beforeUrl = driver.getCurrentUrl(); String windowHandle = driver.getWindowHandle(); element.sendKeys("\n"); Util.driverSleepLong(); Util.cleanUpNewWindows(driver, windowHandle); String afterSource = driver.getPageSource(); String afterTitle = driver.getTitle(); String afterUrl = driver.getCurrentUrl(); if (!beforeTitle.equals(afterTitle) || !beforeUrl.equals(afterUrl) || Math.abs(beforeSource.length() - afterSource.length()) > MIN_SOURCE_DIFF) { handleIframe(driver); return driver.getPageSource(); } } catch (Throwable t) { Log.exception(t); } } } catch (Throwable t) { Log.exception(t); } throw new ActionFailed(); }
From source file:com.screenslicer.core.scrape.QueryKeyword.java
License:Open Source License
private static void handleIframe(RemoteWebDriver driver) throws ActionFailed { List<WebElement> iframes = null; try {// w ww . j a v a 2s . com iframes = driver.findElementsByTagName("iframe"); } catch (Throwable t) { throw new ActionFailed(t); } try { for (WebElement iframe : iframes) { try { Dimension dim = iframe.getSize(); if (iframe.isDisplayed() && (dim.getHeight() * dim.getWidth()) > MIN_IFRAME_AREA) { String src = iframe.getAttribute("src"); if (!CommonUtil.isEmpty(src) && src.indexOf("://") > -1 && src.indexOf("?") > -1) { String origHandle = null; String origUrl = null; String newHandle = null; try { origHandle = driver.getWindowHandle(); origUrl = driver.getCurrentUrl(); newHandle = Util.newWindow(driver); } catch (Throwable t) { Log.exception(t); throw new ActionFailed(t); } boolean undo = false; try { Util.get(driver, src, true); driver.executeScript( "document.getElementsByTagName('html')[0].style.overflow='scroll';"); Util.driverSleepShort(); if (driver.findElementByTagName("body").getText().length() < MIN_SOURCE_DIFF) { undo = true; } } catch (Throwable t) { Log.exception(t); undo = true; } try { if (undo) { if (origHandle.equals(newHandle)) { if (!driver.getCurrentUrl().equals(origUrl)) { try { driver.navigate().back(); } catch (Throwable t) { Log.exception(t); } } if (!driver.getCurrentUrl().equals(origUrl)) { driver.get(origUrl); } } else { Util.cleanUpNewWindows(driver, origHandle); } } else { Util.cleanUpNewWindows(driver, newHandle); break; } } catch (Throwable t) { Log.exception(t); throw new ActionFailed(t); } } } } catch (Throwable t) { Log.exception(t); continue; } } } catch (Throwable t) { Log.exception(t); throw new ActionFailed(t); } }
From source file:com.screenslicer.core.scrape.Scrape.java
License:Open Source License
private static void fetch(List<Result> results, RemoteWebDriver driver, boolean cached, String runGuid, HtmlNode[] clicks) throws ActionFailed { try {/*www .ja v a 2 s. c o m*/ String origHandle = driver.getWindowHandle(); String origUrl = driver.getCurrentUrl(); String newHandle = null; if (cached) { newHandle = Util.newWindow(driver); } try { for (Result result : results) { if (!isUrlValid(result.url()) && Util.uriScheme.matcher(result.url()).matches()) { continue; } if (ScreenSlicerBatch.isCancelled(runGuid)) { return; } try { Log.info("Fetching URL " + result.url() + ". Cached: " + cached, false); } catch (Throwable t) { Log.exception(t); } try { result.attach(getHelper(driver, result.urlNode(), result.url(), cached, runGuid, clicks)); } catch (Throwable t) { Log.exception(t); } } } catch (Throwable t) { Log.exception(t); } finally { if (cached && origHandle.equals(newHandle)) { Log.exception(new Throwable("Failed opening new window")); Util.get(driver, origUrl, true); } else { Util.cleanUpNewWindows(driver, origHandle); } } } catch (Throwable t) { Log.exception(t); throw new ActionFailed(t); } finally { Util.driverSleepRandLong(); } }
From source file:com.screenslicer.core.scrape.Scrape.java
License:Open Source License
private static String getHelper(final RemoteWebDriver driver, final Node urlNode, final String url, final boolean p_cached, final String runGuid, final HtmlNode[] clicks) { final String urlHash = CommonUtil.isEmpty(url) ? null : Crypto.fastHash(url); final long time = System.currentTimeMillis(); if (urlHash != null) { synchronized (fetchLocalCacheLock) { if (fetchLocalCache.containsKey(urlHash)) { if (time - fetchLocalCache.get(urlHash) < FETCH_LOCAL_CACHE_EXPIRES) { try { return FileUtils.readFileToString(new File("./fetch_local_cache/" + urlHash), "utf-8"); } catch (Throwable t) { Log.exception(t); fetchLocalCache.remove(urlHash); }// w ww . ja va 2 s .c o m } else { fetchLocalCache.remove(urlHash); } } } } if (!CommonUtil.isEmpty(url)) { final Object resultLock = new Object(); final String initVal; final String[] result; synchronized (resultLock) { initVal = Random.next(); result = new String[] { initVal }; } final AtomicBoolean started = new AtomicBoolean(); Thread thread = new Thread(new Runnable() { @Override public void run() { started.set(true); boolean cached = p_cached; String newHandle = null; String origHandle = null; try { origHandle = driver.getWindowHandle(); String content = null; if (!cached) { try { Util.get(driver, url, urlNode, false); } catch (Throwable t) { if (urlNode != null) { Util.newWindow(driver); } Util.get(driver, url, false); } if (urlNode != null) { newHandle = driver.getWindowHandle(); } Util.doClicks(driver, clicks, null); content = driver.getPageSource(); if (CommonUtil.isEmpty(content)) { cached = true; } } if (cached) { if (ScreenSlicerBatch.isCancelled(runGuid)) { return; } Util.get(driver, toCacheUrl(url), false); content = driver.getPageSource(); } content = Util.clean(content, driver.getCurrentUrl()).outerHtml(); if (WebApp.DEBUG) { try { FileUtils.writeStringToFile(new File("./" + System.currentTimeMillis()), content); } catch (IOException e) { } } //TODO make iframes work // if (!CommonUtil.isEmpty(content)) { // Document doc = Jsoup.parse(content); // Elements docFrames = doc.getElementsByTag("iframe"); // List<WebElement> iframes = driver.findElementsByTagName("iframe"); // int cur = 0; // for (WebElement iframe : iframes) { // try { // driver.switchTo().frame(iframe); // String frameSrc = driver.getPageSource(); // if (!CommonUtil.isEmpty(frameSrc) && cur < docFrames.size()) { // docFrames.get(cur).html( // Util.outerHtml(Jsoup.parse(frameSrc).body().childNodes())); // } // } catch (Throwable t) { // Log.exception(t); // } // ++cur; // } // driver.switchTo().defaultContent(); // content = doc.outerHtml(); // } synchronized (resultLock) { result[0] = content; } } catch (Throwable t) { Log.exception(t); } finally { synchronized (resultLock) { if (initVal.equals(result[0])) { result[0] = null; } } Util.driverSleepRandLong(); if (newHandle != null && origHandle != null) { try { Util.cleanUpNewWindows(driver, origHandle); } catch (Throwable t) { Log.exception(t); } } } } }); thread.start(); try { while (!started.get()) { try { Thread.sleep(WAIT); } catch (Throwable t) { Log.exception(t); } } thread.join(HANG_TIME); synchronized (resultLock) { if (initVal.equals(result[0])) { try { Log.exception(new Exception("Browser is hanging")); forceQuit(); thread.interrupt(); } catch (Throwable t) { Log.exception(t); } throw new ActionFailed(); } else if (urlHash != null && !CommonUtil.isEmpty(result[0]) && result[0].length() > MIN_FETCH_CACHE_PAGE_LEN) { synchronized (fetchLocalCacheLock) { if (fetchLocalCache.size() > MAX_FETCH_LOCAL_CACHE) { try { FileUtils.deleteQuietly(new File("./fetch_local_cache")); FileUtils.forceMkdir(new File("./fetch_local_cache")); } catch (Throwable t) { Log.exception(t); } fetchLocalCache.clear(); } FileUtils.writeStringToFile(new File("./fetch_local_cache/" + urlHash), result[0], "utf-8", false); fetchLocalCache.put(urlHash, time); } } return result[0]; } } catch (Throwable t) { Log.exception(t); } } return null; }
From source file:com.screenslicer.core.util.Util.java
License:Open Source License
public static void get(RemoteWebDriver driver, String url, Node urlNode, boolean retry) throws ActionFailed { boolean exception = true; boolean success = true; String origHandle = null;/*from w w w. ja va 2s .c om*/ try { String source = null; boolean badUrl = true; boolean statusFail = true; if (urlNode != null) { origHandle = driver.getWindowHandle(); } for (int i = 0; i < REFRESH_TRIES && (badUrl || statusFail || exception || CommonUtil.isEmpty(source)); i++) { badUrl = false; statusFail = false; exception = false; source = null; if (WebApp.DEBUG) { System.out.println("getting url..."); } try { driver.getKeyboard().sendKeys(Keys.ESCAPE); } catch (Throwable t) { Log.exception(t); } if (urlNode != null) { try { cleanUpNewWindows(driver, origHandle); } catch (Throwable t) { Log.exception(t); } } try { Util.driverSleepVeryShort(); if (urlNode != null) { try { Util.clickToNewWindow(driver, toElement(driver, urlNode)); Set<String> newHandles = driver.getWindowHandles(); for (String newHandle : newHandles) { if (!origHandle.equals(newHandle)) { driver.switchTo().window(newHandle); break; } } } catch (Throwable t) { exception = true; Log.exception(t); Util.cleanUpNewWindows(driver, origHandle); } } else { driver.get("about:blank"); try { driver.get(url); } catch (TimeoutException e) { Log.exception(e); } } if (!exception) { Util.driverSleepShort(); Util.driverSleepLong(); statusFail = HttpStatus.status(driver, urlNode != null) != 200; driver.switchTo().defaultContent(); source = driver.getPageSource(); try { new URL(driver.getCurrentUrl()); badUrl = false; } catch (Throwable t) { badUrl = true; } } } catch (Throwable t) { Log.exception(t); exception = true; } if ((!retry || i + 1 == REFRESH_TRIES) && (badUrl || statusFail || exception || CommonUtil.isEmpty(source))) { try { driver.getKeyboard().sendKeys(Keys.ESCAPE); Util.driverSleepVeryShort(); } catch (Throwable t) { Log.exception(t); } success = false; if (!retry) { break; } } } if (WebApp.DEBUG) { System.out.println("getting url - done"); } } catch (Throwable t) { Log.exception(t); success = false; } if (!success) { if (urlNode != null && origHandle != null) { try { cleanUpNewWindows(driver, origHandle); } catch (Throwable t) { Log.exception(t); } } throw new ActionFailed(); } }
From source file:com.screenslicer.core.util.Util.java
License:Open Source License
public static Element openElement(final RemoteWebDriver driver, final String[] whitelist, final String[] patterns, final UrlTransform[] transforms) throws ActionFailed { try {//ww w. j a va2 s .co m driver.executeScript(" var all = document.getElementsByTagName('*');" + "for(var i = 0; i < all.length; i++){" + " if(all[i].className){" + " all[i].className=all[i].className.replace(/" + NODE_MARKER + "\\d+/g,'').replace(/" + HIDDEN_MARKER + "/g,'').replace(/" + FILTERED_MARKER + "/g,'').replace(/" + FILTERED_LENIENT_MARKER + "/g,'').replace(/\\s+/g,' ').trim();" + " }" + "}" + isVisible + "for(var j = 0; j < all.length; j++){" + " all[j].className += ' " + NODE_MARKER + "'+j+' ';" + " if(!isVisible(all[j])){" + " all[j].className += ' " + HIDDEN_MARKER + " ';" + " }" + "}"); String url = driver.getCurrentUrl(); new URL(url); Element element = parse(driver.getPageSource(), url).body(); element.traverse(new NodeVisitor() { @Override public void tail(Node node, int depth) { } @Override public void head(Node node, int depth) { if (!node.nodeName().equals("#text") && !isEmpty(node)) { markVisible(node); } } }); if ((whitelist != null && whitelist.length > 0) || (patterns != null && patterns.length > 0)) { element.traverse(new NodeVisitor() { @Override public void tail(Node node, int depth) { } @Override public void head(Node node, int depth) { if (node.nodeName().equals("a")) { if (isUrlFiltered(driver.getCurrentUrl(), node.attr("href"), whitelist, patterns, transforms)) { markFiltered(node, false); } } else { String urlAttr = Util.urlFromAttr(node); if (!CommonUtil.isEmpty(urlAttr) && isUrlFiltered(driver.getCurrentUrl(), urlAttr, whitelist, patterns, transforms)) { markFiltered(node, true); } } } }); } return element; } catch (Exception e) { Log.exception(e); throw new ActionFailed(e); } }