Package net.thucydides.core.pages.integration

Source Code of net.thucydides.core.pages.integration.WhenUsingTheFluentAPIWithJavascriptAndJQuery

package net.thucydides.core.pages.integration;


import net.thucydides.core.webdriver.javascript.JavascriptExecutorFacade;
import net.thucydides.core.webdriver.jquery.ByJQuery;
import net.thucydides.core.webdriver.jquery.ByJQuerySelector;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.remote.UnreachableBrowserException;

import java.util.List;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;

public class WhenUsingTheFluentAPIWithJavascriptAndJQuery {

    private static StaticSitePage page;
    private static WebDriver driver;

    @BeforeClass
    public static void openDriver() {
        driver = new PhantomJSDriver();
        page = new StaticSitePage(driver, 1000);
        page.open();
    }

    @AfterClass
    public static void shutdownDriver() {
        driver.quit();
    }

    @Test
    public void should_inject_jquery_into_the_page() {
        WebDriver driver = new PhantomJSDriver();
        StaticSitePage page = new StaticSitePage(driver, 1000);
        getPage().open();

        getPage().evaluateJavascript("$('#firstname').focus();");

        Boolean jqueryInjected = (Boolean) getPage().evaluateJavascript("return (typeof jQuery === 'function')");
        assertThat(jqueryInjected, is(true));

        driver.quit();
    }

    @Test
    public void should_be_able_to_use_the_javascript_executor_with_parameters() {
        getPage().evaluateJavascript("$('#firstname').focus();", "#firstname");

        assertThat(getPage().element(getPage().firstName).hasFocus(), is(true));
    }

    @Test
    public void should_be_able_to_set_focus_directly() {
        JavascriptExecutorFacade js = new JavascriptExecutorFacade(getPage().getDriver());
        js.executeScript("$('#firstname').focus();");

        assertThat(getPage().element(getPage().firstName).hasFocus(), is(true));
    }

    @Test
    public void should_support_jquery_queries_in_the_page() {

        StaticSitePage page = getPage();
        getPage().evaluateJavascript("$('#firstname').focus();");

        assertThat(getPage().element(getPage().firstName).hasFocus(), is(true));

        getPage().evaluateJavascript("$('#lastname').focus();");

        assertThat(getPage().element(getPage().lastName).hasFocus(), is(true));
    }

    @Test
    public void should_support_jquery_queries_that_return_values_in_the_page() {

        Object result = getPage().evaluateJavascript("return $('#country').val();");

        assertThat(result.toString(), is("Australia"));
    }

    @Test
    public void should_be_able_to_find_an_element_using_a_jquery_expression() {
        WebElement link = getPage().getDriver().findElement(ByJQuery.selector("a[title='Click Me']"));
        assertThat(link.isDisplayed(), is(true));
    }

    @Test
    public void should_be_able_to_find_multiple_elements_using_a_jquery_expression() {
        List<WebElement> links = getPage().getDriver().findElements(ByJQuery.selector("h2"));
        assertThat(links.size(), is(2));
    }

    @Test(expected = WebDriverException.class)
    public void should_fail_gracefully_if_no_jquery_element_is_found() {
        getPage().getDriver().findElement(ByJQuery.selector("a[title='Does Not Exist']"));
    }

    @Test(expected = WebDriverException.class)
    public void should_fail_gracefully_if_jquery_selector_is_invalid() {
        getPage().getDriver().findElement(ByJQuery.selector("a[title='Does Not Exist'"));
    }

    @Test
    public void should_evaluate_javascript_within_browser() {
        String result = (String) getPage().evaluateJavascript("return document.title");
        assertThat(result, is("Thucydides Test Site"));
    }

    @Test
    public void should_execute_javascript_within_browser() {
        getPage().open();
        assertThat(getPage().element(getPage().firstName).hasFocus(), is(false));
        getPage().evaluateJavascript("document.getElementById('firstname').focus()");
        assertThat(getPage().element(getPage().firstName).hasFocus(), is(true));
    }


    @Test
    public void a_jquery_selector_should_be_described_by_the_corresponding_jquery_expression() {
        ByJQuerySelector jQuerySelector = ByJQuery.selector("a[title='Click Me']");

        assertThat(jQuerySelector.toString(), containsString("a[title='Click Me']"));
    }

    public StaticSitePage getPage() {
        try {
            page.getTitle();
        } catch (UnreachableBrowserException e) {
            driver = new PhantomJSDriver();
            page = new StaticSitePage(driver, 1000);           
        }
        return page;
    }
}
TOP

Related Classes of net.thucydides.core.pages.integration.WhenUsingTheFluentAPIWithJavascriptAndJQuery

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.