Example usage for org.openqa.selenium.remote RemoteWebDriver getCurrentUrl

List of usage examples for org.openqa.selenium.remote RemoteWebDriver getCurrentUrl

Introduction

In this page you can find the example usage for org.openqa.selenium.remote RemoteWebDriver getCurrentUrl.

Prototype

@Override
    public String getCurrentUrl() 

Source Link

Usage

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);
    }
}