Example usage for org.openqa.selenium Cookie getValue

List of usage examples for org.openqa.selenium Cookie getValue

Introduction

In this page you can find the example usage for org.openqa.selenium Cookie getValue.

Prototype

public String getValue() 

Source Link

Usage

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