Example usage for org.openqa.selenium.support.ui ExpectedConditions titleContains

List of usage examples for org.openqa.selenium.support.ui ExpectedConditions titleContains

Introduction

In this page you can find the example usage for org.openqa.selenium.support.ui ExpectedConditions titleContains.

Prototype

public static ExpectedCondition<Boolean> titleContains(final String title) 

Source Link

Document

An expectation for checking that the title contains a case-sensitive substring

Usage

From source file:com.pentaho.ctools.cdf.require.RadioComponent.java

License:Apache License

/**
 * ############################### Test Case 2 ###############################
 *
 * Test Case Name:/*from ww  w  . j  ava 2 s .  com*/
 *    Reload Sample
 * Description:
 *    Reload the sample (not refresh page).
 * Steps:
 *    1. Click in Code and then click in button 'Try me'.
 */
@Test
public void tc1_PageContent_DisplayTitle() {
    this.log.info("tc1_PageContent_DisplayTitle");

    // Wait for title become visible and with value 'Community Dashboard Framework'
    wait.until(ExpectedConditions.titleContains("Community Dashboard Framework"));
    // Wait for visibility of 'VisualizationAPIComponent'
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));

    // Validate the sample that we are testing is the one
    assertEquals("Community Dashboard Framework", driver.getTitle());
    assertEquals("RadioComponent", this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));
}

From source file:com.pentaho.ctools.cdf.require.SchedulePrptComponent.java

License:Apache License

/**
 * ############################### Test Case 1 ###############################
 *
 * Test Case Name://  ww  w. j  ava2 s  . c  om
 *    Validate Page Contents
 * Description:
 *    Here we want to validate the page contents.
 * Steps:
 *    1. Check the widget's title.
 */
@Test
public void tc1_PageContent_DisplayTitle() {
    this.log.info("tc1_PageContent_DisplayTitle");

    // Wait for title become visible and with value 'Community Dashboard Framework'
    wait.until(ExpectedConditions.titleContains("Community Dashboard Framework"));
    // Wait for visibility of 'VisualizationAPIComponent'
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));

    // Validate the sample that we are testing is the one
    assertEquals("Community Dashboard Framework", driver.getTitle());
    assertEquals("SchedulePrptComponent", this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));
}

From source file:com.pentaho.ctools.cdf.require.SchedulePrptComponent.java

License:Apache License

/**
 * ############################### Test Case 2 ###############################
 *
 * Test Case Name://from w ww  .  j  av  a  2s  .  c  o m
 *    Create a Schedule
 * Description:
 *    It is supposed to create a schedule and validate it was created with
 *    specify data and date.
 * Steps:
 *    1. Click to create a schedule prpt.
 *    2. Fill the form and submit
 *    3. Check for alert.
 *    4. On Schedule Manager, it is set the schedule.
 * @throws InterruptedException
 */
@Test
public void tc3_SchedulePrpt_ScheduleCreatedSuccessful() {
    this.log.info("tc3_SchedulePrpt_ScheduleCreatedSuccessful");
    this.bRemoveSchedule = true;
    String schLocation = "/public";

    //Initialize some data
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
    SimpleDateFormat sdfDay = new SimpleDateFormat("d");
    Date dNow = new Date();
    Calendar c = Calendar.getInstance();
    c.setTime(dNow);
    c.add(Calendar.DATE, 1);
    Date dTomorrow = c.getTime();
    c.add(Calendar.DATE, 40); //30th days from today
    Date d40days = c.getTime();

    /*
     * ## Step 1
     */
    this.elemHelper.FindElement(driver, By.xpath("//div[@id='sampleObject']/button")).click();

    /*
     * ## Step 2
     */
    wait.until(ExpectedConditions.presenceOfElementLocated(By.id("jqistate_basicState")));
    //Set schedule name
    this.elemHelper.FindElement(driver, By.id("nameIn")).clear();
    this.elemHelper.FindElement(driver, By.id("nameIn")).sendKeys(this.schNameTc3);
    //Set schedule location
    this.elemHelper.FindElement(driver, By.id("locationIn")).clear();
    this.elemHelper.FindElement(driver, By.id("locationIn")).sendKeys(schLocation);
    //Select Monthly
    Select slRecurrence = new Select(this.elemHelper.FindElement(driver, By.id("recurrId")));
    slRecurrence.selectByValue("monthly");
    //Select Hour
    Select slHours = new Select(this.elemHelper.FindElement(driver, By.id("hours")));
    slHours.selectByValue("9");
    //Select Minutes
    Select slMinutes = new Select(this.elemHelper.FindElement(driver, By.id("minutes")));
    slMinutes.selectByValue("17");
    //Select AM/FM
    Select slAMFM = new Select(this.elemHelper.FindElement(driver, By.id("amPm")));
    slAMFM.selectByValue("pm");
    //Select Option 'The x y of every month
    this.elemHelper.Click(driver, By.xpath("//div[@id='patternMonth']/input[2]"));
    //Select Month
    Select slOccDay = new Select(this.elemHelper.FindElement(driver, By.id("monthOpt1Select")));
    slOccDay.selectByValue("1");
    //Select Wednesday
    Select slWeekday = new Select(this.elemHelper.FindElement(driver, By.id("monthOpt2Select")));
    slWeekday.selectByValue("3");
    //Select Range Of Recurrence
    //Start - tomorrow
    this.elemHelper.FindElement(driver, By.id("rangeStartIn")).clear();
    this.elemHelper.FindElement(driver, By.id("rangeStartIn")).sendKeys(sdf.format(dTomorrow));
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//table[@class='ui-datepicker-calendar']")));
    WebElement dateCalendar = this.elemHelper.FindElement(driver,
            By.xpath("//table[@class='ui-datepicker-calendar']"));
    List<WebElement> columns = dateCalendar.findElements(By.tagName("td"));
    String tomorrowDay = sdfDay.format(dTomorrow);
    for (WebElement cell : columns) {
        String strCell = cell.getText();
        if (strCell.equals(tomorrowDay)) {
            cell.findElement(By.linkText(tomorrowDay)).click();
            break;
        }
    }
    //End
    //Select End Date
    wait.until(ExpectedConditions.elementToBeClickable(By.id("endByRadio")));
    this.elemHelper.FindElement(driver, By.id("endByRadio")).click();
    this.elemHelper.FindElement(driver, By.id("endByIn")).sendKeys(sdf.format(d40days));
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//table[@class='ui-datepicker-calendar']")));
    WebElement dateCalendar2 = this.elemHelper.FindElement(driver,
            By.xpath("//table[@class='ui-datepicker-calendar']"));
    List<WebElement> columns2 = dateCalendar2.findElements(By.tagName("td"));
    String day = sdfDay.format(d40days);
    for (WebElement cell2 : columns2) {
        String strCell2 = cell2.getText();
        if (strCell2.equals(day)) {
            cell2.findElement(By.linkText(day)).click();
            break;
        }
    }

    //Submit Form
    wait.until(ExpectedConditions.elementToBeClickable(By.id("jqi_basicState_buttonOk")));
    this.elemHelper.FindElement(driver, By.id("jqi_basicState_buttonOk")).click();
    //Wait for the new window.
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("jqistate_mailState")));
    wait.until(ExpectedConditions.elementToBeClickable(By.id("jqi_mailState_buttonOk")));
    this.elemHelper.FindElement(driver, By.id("jqi_mailState_buttonOk")).click();

    // ## Step 3
    wait.until(ExpectedConditions.alertIsPresent());
    Alert alert = driver.switchTo().alert();
    String confirmationMsg = alert.getText();
    alert.accept();
    assertEquals(confirmationMsg, "Successfully scheduled.");

    /*
     * ## Step 4
     */
    //-->Need to check if the schedule was created
    //Go to home page
    driver.get(PageUrl.PUC);

    // NOTE - we have to wait for loading disappear
    this.elemHelper.WaitForElementInvisibility(driver,
            By.xpath("//div[@class='busy-indicator-container waitPopup']"));

    //Click in Schedule
    wait.until(ExpectedConditions.titleContains("Pentaho User Console"));
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='pucUserDropDown']/table/tbody/tr/td/div")));
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//iframe[@id='home.perspective']")));
    wait.until(ExpectedConditions
            .elementToBeClickable(By.xpath("//div[@id='mantle-perspective-switcher']/table/tbody/tr/td[2]")));
    this.elemHelper
            .FindElement(driver, By.xpath("//div[@id='mantle-perspective-switcher']/table/tbody/tr/td[2]"))
            .click();
    WebElement listMenyTr = this.elemHelper.FindElement(driver,
            By.xpath("//div[@id='customDropdownPopupMajor']/div/div/table/tbody"));
    List<WebElement> listMenuElementsTrs = listMenyTr.findElements(By.xpath("//td[@class='gwt-MenuItem']"));
    for (int i = 0; i < listMenuElementsTrs.size(); i++) {
        WebElement element = listMenuElementsTrs.get(i);
        if (element.getText().equals("Schedules")) {
            element.click();
            break;
        }
    }
    wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.workspaceHeading")));
    // Now we are in Schedule page
    List<WebElement> listScheduleTrs = this.elemHelper
            .FindElement(driver, By.xpath("//table[@id='schedule-table']/tbody"))
            .findElements(By.tagName("tr"));
    String scheduleName = "";
    String scheduleRepeats = "";
    String scheduleSourceFile = "";
    String scheduleOuputLocation = "";
    String scheduleLastRun = "";
    String scheduleNextRun = "";
    String scheduleCreatedBy = "";
    String scheduleStatus = "";
    for (int j = 1; j <= listScheduleTrs.size(); j++) {
        WebElement elementFirstDiv = this.elemHelper.FindElement(driver,
                By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td/div"));
        scheduleName = elementFirstDiv.getText();
        if (scheduleName.equals(this.schNameTc3)) {

            scheduleRepeats = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[2]/div"));
            scheduleSourceFile = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[3]/div"));
            scheduleOuputLocation = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[4]/div"));
            scheduleLastRun = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[5]/div"));
            scheduleNextRun = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[6]/div"));
            scheduleCreatedBy = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[7]/div"));
            scheduleStatus = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[8]/div"));
            break;
        }
    }

    //Getting the week day of next run
    String dayOfWeek = "";
    if (!scheduleNextRun.isEmpty()) {
        try {
            Date dateNextRun = new SimpleDateFormat("yyyy MMM dd HH:mm:ss", Locale.US).parse(scheduleNextRun);
            dayOfWeek = new SimpleDateFormat("EE", Locale.US).format(dateNextRun);
        } catch (ParseException pe) {
            this.log.error(pe.getMessage());
        }
    }

    assertEquals(this.schNameTc3, scheduleName);
    assertEquals("The second Wednesday of every month at 21:17:00", scheduleRepeats);
    assertEquals("/public/Steel Wheels/Widget Library/Report Snippets/InventorybyLine", scheduleSourceFile);
    assertEquals(schLocation, scheduleOuputLocation);
    assertEquals("-", scheduleLastRun);
    assertEquals("Wed", dayOfWeek);
    assertEquals("admin", scheduleCreatedBy);
    assertEquals("Normal", scheduleStatus);
}

From source file:com.pentaho.ctools.cdf.require.SchedulePrptComponent.java

License:Apache License

/**
 * This method will remove all created schedules on the tests.
 * Note - for a new schedule update code.
 *///from  w  w  w. jav  a2 s . c  o m
private void removeAllCreatedSchedules() {
    this.log.info("removeAllCreatedSchedules");
    //Go to home page
    driver.get(PageUrl.PUC);
    // NOTE - we have to wait for loading disappear
    this.elemHelper.WaitForElementInvisibility(driver,
            By.xpath("//div[@class='busy-indicator-container waitPopup']"));

    //Click in Schedule
    wait.until(ExpectedConditions.titleContains("Pentaho User Console"));
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='pucUserDropDown']/table/tbody/tr/td/div")));
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//iframe[@id='home.perspective']")));
    wait.until(ExpectedConditions
            .elementToBeClickable(By.xpath("//div[@id='mantle-perspective-switcher']/table/tbody/tr/td[2]")));
    this.elemHelper
            .FindElement(driver, By.xpath("//div[@id='mantle-perspective-switcher']/table/tbody/tr/td[2]"))
            .click();
    WebElement listMenyTr = this.elemHelper.FindElement(driver,
            By.xpath("//div[@id='customDropdownPopupMajor']/div/div/table/tbody"));
    List<WebElement> listMenuElementsTrs = listMenyTr.findElements(By.xpath("//td[@class='gwt-MenuItem']"));
    for (int i = 0; i < listMenuElementsTrs.size(); i++) {
        WebElement element = listMenuElementsTrs.get(i);
        if (element.getText().equals("Schedules")) {
            element.click();
            break;
        }
    }

    wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.workspaceHeading")));

    // Now we are in Schedule page
    Boolean someThingToDelete = true;
    int listElements = 0;
    int listElementsPrevious = -1;
    while (someThingToDelete) {
        someThingToDelete = false;
        List<WebElement> listScheduleTrs = this.elemHelper
                .FindElement(driver, By.xpath("//table[@id='schedule-table']/tbody"))
                .findElements(By.tagName("tr"));
        listElements = listScheduleTrs.size();

        //The new list must be different from previous list
        while (listElements == listElementsPrevious) {
            listScheduleTrs = this.elemHelper
                    .FindElement(driver, By.xpath("//table[@id='schedule-table']/tbody"))
                    .findElements(By.tagName("tr"));
            listElements = listScheduleTrs.size();
        }

        for (int j = 1; j <= listElements; j++) {
            WebElement elementFirstDiv = this.elemHelper.FindElement(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td/div"));

            if (elementFirstDiv.getText().equals(this.schNameTc3)) {
                elementFirstDiv.click(); //Select the row

                //Wait for row to be selected
                for (int t = 0; t < 100; t++) {
                    WebElement elementRow = this.elemHelper.FindElement(driver,
                            By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]"));

                    if (elementRow.getAttribute("class").contains("cellTableSelectedRow")) {
                        break;
                    }
                }

                //Click to remove the schedule item (the selected row)
                this.elemHelper.Click(driver, By.cssSelector("img.gwt-Image.pentaho-deletebutton"));
                this.elemHelper.WaitForElementPresenceAndVisible(driver,
                        By.xpath("//div[@class='pentaho-dialog']"));
                this.elemHelper.Click(driver, By.id("okButton"));

                this.elemHelper.WaitForElementInvisibility(driver, By.xpath("//div[@class='pentaho-dialog']"));

                someThingToDelete = true; //Continue checking if there is something to delete
                break;
            }
        }
        listElementsPrevious = listElements;
    }
}

From source file:com.pentaho.ctools.cdf.require.SelectComponent.java

License:Apache License

/**
 * ############################### Test Case 1 ###############################
 *
 * Test Case Name:/*from  w w  w  .  j  a  v a 2s . co  m*/
 *    Page Content
 * Description:
 *    Check the contents presented in the page.
 * Steps:
 *    1. Validate the title and subtitle.
 */
@Test
public void tc1_PageContent_DisplayTitle() {
    this.log.info("tc1_PageContent_DisplayTitle");

    // Wait for title become visible and with value 'Community Dashboard Framework'
    wait.until(ExpectedConditions.titleContains("Community Dashboard Framework"));
    // Wait for visibility of 'VisualizationAPIComponent'
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));

    // Validate the sample that we are testing is the one
    assertEquals("Community Dashboard Framework", driver.getTitle());
    assertEquals("SelectComponent", this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));
}

From source file:com.pentaho.ctools.cdf.require.SelectMultiComponent.java

License:Apache License

/**
 * ############################### Test Case 2 ###############################
 *
 * Test Case Name:/*  w w  w .j a v  a  2  s. co m*/
 *    Reload Sample
 * Description:
 *    Reload the sample (not refresh page).
 * Steps:
 *    1. Click in Code and then click in button 'Try me'.
 */
@Test
public void tc1_PageContent_DisplayTitle() {
    this.log.info("tc1_PageContent_DisplayTitle");

    // Wait for title become visible and with value 'Community Dashboard Framework'
    wait.until(ExpectedConditions.titleContains("Community Dashboard Framework"));
    // Wait for visibility of 'VisualizationAPIComponent'
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));

    // Validate the sample that we are testing is the one
    assertEquals("Community Dashboard Framework", driver.getTitle());
    assertEquals("SelectMultiComponent", this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));
}

From source file:com.pentaho.ctools.cdf.require.TableComponent.java

License:Apache License

/**
 * ############################### Test Case 1 ###############################
 *
 * Test Case Name:/*from  ww  w  .  ja  v  a  2s.c o  m*/
 *    Validate Page Contents
 * Description:
 *    Here we want to validate the page contents.
 * Steps:
 *    1. Check the widget's title.
 */
@Test
public void tc1_PageContent_DisplayTitle() {
    this.log.info("tc1_PageContent_DisplayTitle");

    //Wait for title become visible and with value 'Community Dashboard Framework'
    wait.until(ExpectedConditions.titleContains("Community Dashboard Framework"));
    //Wait for visibility of 'TableComponent'
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));

    // Validate the sample that we are testing is the one
    assertEquals("Community Dashboard Framework", driver.getTitle());
    assertEquals("TableComponent", this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));
}

From source file:com.pentaho.ctools.cdf.require.TextInputComponent.java

License:Apache License

/**
 * ############################### Test Case 1 ###############################
 *
 * Test Case Name:/*from  w  w w  .  j av  a 2 s. c o  m*/
 *    Reload Sample
 * Description:
 *    Reload the sample (not refresh page).
 * Steps:
 *    1. Click in Code and then click in button 'Try me'.
 */
@Test
public void tc1_PageContent_DisplayTitle() {
    this.log.info("tc1_PageContent_DisplayTitle");

    // Wait for title become visible and with value 'Community Dashboard Framework'
    wait.until(ExpectedConditions.titleContains("Community Dashboard Framework"));
    // Wait for visibility of 'VisualizationAPIComponent'
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));

    // Validate the sample that we are testing is the one
    assertEquals("Community Dashboard Framework", driver.getTitle());
    assertEquals("TextInputComponent", this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));
}

From source file:com.pentaho.ctools.cdf.require.XactionComponent.java

License:Apache License

/**
 * ############################### Test Case 1 ###############################
 *
 * Test Case Name:/* ww  w.j  a va2s.co  m*/
 *    Reload Sample
 * Description:
 *    Reload the sample (not refresh page).
 * Steps:
 *    1. Click in Code and then click in button 'Try me'.
 */
@Test
public void tc1_PageContent_DisplayTitle() {
    this.log.info("tc1_PageContent_DisplayTitle");

    // Wait for title become visible and with value 'Community Dashboard Framework'
    wait.until(ExpectedConditions.titleContains("Community Dashboard Framework"));
    // Wait for visibility of 'VisualizationAPIComponent'
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));

    // Validate the sample that we are testing is the one
    assertEquals("Community Dashboard Framework", driver.getTitle());
    assertEquals("XactionComponent", this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='dashboardContent']/div/div/div/h2/span[2]")));
}

From source file:com.pentaho.ctools.cdf.SchedulePrptComponent.java

License:Apache License

/**
 * ############################### Test Case 2 ###############################
 *
 * Test Case Name:/*from  w w w . j a va2s  .co  m*/
 *    Create a Schedule
 * Description:
 *    It is supposed to create a schedule and validate it was created with
 *    specify data and date.
 * Steps:
 *    1. Click to create a schedule prpt.
 *    2. Fill the form and submit
 *    3. Check for alert.
 *    4. On Schedule Manager, it is set the schedule.
 * @throws InterruptedException
 */
@Test
public void tc3_SchedulePrpt_ScheduleCreatedSuccessful() {
    this.log.info("tc3_SchedulePrpt_ScheduleCreatedSuccessful");
    this.bRemoveSchedule = true;

    String schLocation = "/public";

    //Initialize some data
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
    SimpleDateFormat sdfDay = new SimpleDateFormat("d");
    Date dNow = new Date();
    Calendar c = Calendar.getInstance();
    c.setTime(dNow);
    c.add(Calendar.DATE, 1);
    Date dTomorrow = c.getTime();
    c.add(Calendar.DATE, 40); //30th days from today
    Date d40days = c.getTime();

    // ## Step 1
    this.elemHelper.FindElement(driver, By.xpath("//span[@id='sampleObject']/button")).click();

    // ## Step 2
    wait.until(ExpectedConditions.presenceOfElementLocated(By.id("jqistate_basicState")));
    //Set schedule name
    this.elemHelper.FindElement(driver, By.id("nameIn")).clear();
    this.elemHelper.FindElement(driver, By.id("nameIn")).sendKeys(this.schNameTc3);
    //Set schedule location
    this.elemHelper.FindElement(driver, By.id("locationIn")).clear();
    this.elemHelper.FindElement(driver, By.id("locationIn")).sendKeys(schLocation);
    //Select Monthly
    Select slRecurrence = new Select(this.elemHelper.FindElement(driver, By.id("recurrId")));
    slRecurrence.selectByValue("monthly");
    //Select Hour
    Select slHours = new Select(this.elemHelper.FindElement(driver, By.id("hours")));
    slHours.selectByValue("9");
    //Select Minutes
    Select slMinutes = new Select(this.elemHelper.FindElement(driver, By.id("minutes")));
    slMinutes.selectByValue("17");
    //Select AM/FM
    Select slAMFM = new Select(this.elemHelper.FindElement(driver, By.id("amPm")));
    slAMFM.selectByValue("pm");
    //Select Option 'The x y of every month
    this.elemHelper.FindElement(driver, By.xpath("//div[@id='patternMonth']/input[2]")).click();
    //Select Month
    Select slOccDay = new Select(this.elemHelper.FindElement(driver, By.id("monthOpt1Select")));
    slOccDay.selectByValue("1");
    //Select Wednesday
    Select slWeekday = new Select(this.elemHelper.FindElement(driver, By.id("monthOpt2Select")));
    slWeekday.selectByValue("3");
    //Select Range Of Recurrence
    //Start - tomorrow
    this.elemHelper.FindElement(driver, By.id("rangeStartIn")).clear();
    this.elemHelper.FindElement(driver, By.id("rangeStartIn")).sendKeys(sdf.format(dTomorrow));
    this.elemHelper.Click(driver, By.id("rangeStartIn"));
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//table[@class='ui-datepicker-calendar']")));
    WebElement dateCalendar = this.elemHelper.FindElement(driver,
            By.xpath("//table[@class='ui-datepicker-calendar']"));
    List<WebElement> columns = dateCalendar.findElements(By.tagName("td"));
    String tomorrowDay = sdfDay.format(dTomorrow);
    for (WebElement cell : columns) {
        String strCell = cell.getText();
        if (strCell.equals(tomorrowDay)) {
            cell.findElement(By.linkText(tomorrowDay)).click();
            break;
        }
    }
    //End
    //Select End Date
    wait.until(ExpectedConditions.elementToBeClickable(By.id("endByRadio")));
    this.elemHelper.FindElement(driver, By.id("endByRadio")).click();
    this.elemHelper.FindElement(driver, By.id("endByIn")).sendKeys(sdf.format(d40days));
    this.elemHelper.FindElement(driver, By.id("endByIn")).click();
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//table[@class='ui-datepicker-calendar']")));
    WebElement dateCalendar2 = this.elemHelper.FindElement(driver,
            By.xpath("//table[@class='ui-datepicker-calendar']"));
    List<WebElement> columns2 = dateCalendar2.findElements(By.tagName("td"));
    String day = sdfDay.format(d40days);
    for (WebElement cell2 : columns2) {
        String strCell2 = cell2.getText();
        if (strCell2.equals(day)) {
            cell2.findElement(By.linkText(day)).click();
            break;
        }
    }

    //Submit Form
    wait.until(ExpectedConditions.elementToBeClickable(By.id("jqi_basicState_buttonOk")));
    this.elemHelper.FindElement(driver, By.id("jqi_basicState_buttonOk")).click();
    //Wait for the new window.
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("jqistate_mailState")));
    wait.until(ExpectedConditions.elementToBeClickable(By.id("jqi_mailState_buttonOk")));
    this.elemHelper.FindElement(driver, By.id("jqi_mailState_buttonOk")).click();

    // ## Step 3
    wait.until(ExpectedConditions.alertIsPresent());
    Alert alert = driver.switchTo().alert();
    String confirmationMsg = alert.getText();
    alert.accept();
    assertEquals(confirmationMsg, "Successfully scheduled.");

    // ## Step 4
    //-->Need to check if the schedule was created
    //Go to home page
    driver.get(PageUrl.PUC);

    // NOTE - we have to wait for loading disappear
    this.elemHelper.WaitForElementInvisibility(driver,
            By.xpath("//div[@class='busy-indicator-container waitPopup']"));

    //Click in Schedule
    wait.until(ExpectedConditions.titleContains("Pentaho User Console"));
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.xpath("//div[@id='pucUserDropDown']/table/tbody/tr/td/div")));
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//iframe[@id='home.perspective']")));
    wait.until(ExpectedConditions
            .elementToBeClickable(By.xpath("//div[@id='mantle-perspective-switcher']/table/tbody/tr/td[2]")));
    this.elemHelper
            .FindElement(driver, By.xpath("//div[@id='mantle-perspective-switcher']/table/tbody/tr/td[2]"))
            .click();
    WebElement listMenyTr = this.elemHelper.FindElement(driver,
            By.xpath("//div[@id='customDropdownPopupMajor']/div/div/table/tbody"));
    List<WebElement> listMenuElementsTrs = listMenyTr.findElements(By.xpath("//td[@class='gwt-MenuItem']"));
    for (int i = 0; i < listMenuElementsTrs.size(); i++) {
        WebElement element = listMenuElementsTrs.get(i);
        if (element.getText().equals("Schedules")) {
            element.click();
            break;
        }
    }
    wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.workspaceHeading")));
    // Now we are in Schedule page
    List<WebElement> listScheduleTrs = this.elemHelper
            .FindElement(driver, By.xpath("//table[@id='schedule-table']/tbody"))
            .findElements(By.tagName("tr"));
    String scheduleName = "";
    String scheduleRepeats = "";
    String scheduleSourceFile = "";
    String scheduleOuputLocation = "";
    String scheduleLastRun = "";
    String scheduleNextRun = "";
    String scheduleCreatedBy = "";
    String scheduleStatus = "";
    for (int j = 1; j <= listScheduleTrs.size(); j++) {
        WebElement elementFirstDiv = this.elemHelper.FindElement(driver,
                By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td/div"));
        scheduleName = elementFirstDiv.getText();
        if (scheduleName.equals(this.schNameTc3)) {

            scheduleRepeats = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[2]/div"));
            scheduleSourceFile = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[3]/div"));
            scheduleOuputLocation = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[4]/div"));
            scheduleLastRun = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[5]/div"));
            scheduleNextRun = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[6]/div"));
            scheduleCreatedBy = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[7]/div"));
            scheduleStatus = this.elemHelper.WaitForElementPresentGetText(driver,
                    By.xpath("//table[@id='schedule-table']/tbody/tr[" + j + "]/td[8]/div"));
            break;
        }
    }

    //Getting the week day of next run
    String dayOfWeek = "";
    if (!scheduleNextRun.isEmpty()) {
        try {
            Date dateNextRun = new SimpleDateFormat("yyyy MMM dd HH:mm:ss", Locale.US).parse(scheduleNextRun);
            dayOfWeek = new SimpleDateFormat("EE", Locale.US).format(dateNextRun);
        } catch (ParseException pe) {
            this.log.error(pe.getMessage());
        }
    }

    assertEquals(this.schNameTc3, scheduleName);
    assertEquals("The second Wednesday of every month at 21:17:00", scheduleRepeats);
    assertEquals("/public/Steel Wheels/Widget Library/Report Snippets/InventorybyLine", scheduleSourceFile);
    assertEquals(schLocation, scheduleOuputLocation);
    assertEquals("-", scheduleLastRun);
    assertEquals("Wed", dayOfWeek);
    assertEquals("admin", scheduleCreatedBy);
    assertEquals("Normal", scheduleStatus);
}