private void TypesOfSchool() throws IOException {
   // Click Type of School
   driver.findElement(By.cssSelector("strong")).click();
   // Click Private
   driver.findElement(By.id("edit-public-private-private")).click();
   // Move School Size Slider
   // TODO Slider not working properly
   WebElement Slider1 = driver.findElement(By.id("population_jq_slider"));
   Actions moveSlider1 = new Actions(driver);
   Action action1 = moveSlider1.dragAndDropBy(Slider1, 0, 10).build();
   action1.perform();
   // Select Religious Affiliation
   new Select(driver.findElement(By.id("edit-religious-affiliation")))
       .selectByVisibleText("Church of Christ");
   // Move Tuition Range Slider
   // TODO Slider not working properly
   WebElement Slider2 = driver.findElement(By.id("tuition_range_jq_slider"));
   Actions moveSlider2 = new Actions(driver);
   Action action2 = moveSlider2.dragAndDropBy(Slider2, 0, 10).build();
   action2.perform();
   // Click Apply
   driver.findElement(By.id("edit-type-of-school-apply-filter")).click();
   // Check Result Received or Not
   try {
     assertTrue(
         func.isTextPresent(driver.findElement(By.className("search-total-results")).getText()));
   } catch (Error e) {
     verificationErrors.append(e.toString());
   }
   // Click All Selections
   driver.findElement(By.linkText("Clear All Selections")).click();
 }
  @Override
  public void mouseMoveAt(String locator, String coordString) {
    WebElement webElement = getWebElement(locator);

    WrapsDriver wrapsDriver = (WrapsDriver) webElement;

    WebDriver webDriver = wrapsDriver.getWrappedDriver();

    Actions actions = new Actions(webDriver);

    if (coordString.contains(",")) {
      String[] coords = coordString.split(",");

      int x = GetterUtil.getInteger(coords[0]);
      int y = GetterUtil.getInteger(coords[1]);

      actions.moveToElement(webElement, x, y);
      actions.clickAndHold(webElement);
    } else {
      actions.moveToElement(webElement);
      actions.clickAndHold(webElement);
    }

    Action action = actions.build();

    action.perform();
  }
  @Override
  public void keyUp(String locator, String keySequence) {
    WebElement webElement = getWebElement(locator);

    if (keySequence.startsWith("\\")) {
      int index = GetterUtil.getInteger(keySequence.substring(1));

      Keys keys = _keysArray[index];

      if ((index >= 48) && (index <= 90)) {
        webElement.sendKeys(StringPool.ASCII_TABLE[index]);
      } else if ((index == 16) || (index == 17) || (index == 18)) {
        WrapsDriver wrapsDriver = (WrapsDriver) webElement;

        WebDriver webDriver = wrapsDriver.getWrappedDriver();

        Actions actions = new Actions(webDriver);

        actions.keyUp(webElement, keys);

        Action action = actions.build();

        action.perform();
      } else {
        webElement.sendKeys(keys);
      }
    } else {
      webElement.sendKeys(keySequence);
    }
  }
  @Override
  public void clickAt(String locator, String coordString) {
    if (locator.contains("x:")) {
      String url = getHtmlNodeHref(locator);

      open(url);
    } else {
      WebElement webElement = getWebElement(locator);

      if (coordString.contains(",")) {
        WrapsDriver wrapsDriver = (WrapsDriver) webElement;

        WebDriver webDriver = wrapsDriver.getWrappedDriver();

        Actions actions = new Actions(webDriver);

        String[] coords = coordString.split(",");

        int x = GetterUtil.getInteger(coords[0]);
        int y = GetterUtil.getInteger(coords[1]);

        actions.moveToElement(webElement, x, y);
        actions.click();

        Action action = actions.build();

        action.perform();
      } else {
        webElement.click();
      }
    }
  }
 /**
  * Focus on the Element(WebElement)
  *
  * @return Parent instance
  */
 public ParentPanel focus() {
   Dimension size = getWebElement().getSize(); // for scroll to object
   logAction(this, getParentClassName(), "focus");
   Actions builder = new Actions(getDriver());
   org.openqa.selenium.interactions.Action focus =
       builder.moveToElement(getWebElement(), size.width / 2, size.height / 2).build();
   focus.perform();
   return parent;
 }
 /**
  * A convenience method that performs click at the location of the source element
  *
  * @param xOffset - horizontal move offset.
  * @param yOffset - vertical move offset.
  * @return Parent instance
  */
 public ParentPanel clickBy(int xOffset, int yOffset) {
   doJAction(
       format(
           "click element:  horizontal move offset- %dpx; vertical move offset- %dpx",
           xOffset, yOffset),
       () -> {
         Actions builder = new Actions(getDriver());
         Action click = builder.moveToElement(getWebElement(), xOffset, yOffset).click().build();
         click.perform();
       });
   return parent;
 }
  /**
   * A convenience method that performs click-and-hold at the location of the source element, moves
   * by a given offset, then releases the mouse.
   *
   * @param xOffset - horizontal move offset.
   * @param yOffset - vertical move offset.
   * @return Parent instance
   */
  public ParentPanel dragAndDropBy(int xOffset, int yOffset) {
    logAction(
        this,
        getParentClassName(),
        format(
            "Drag and drop element: horizontal move offset - %dpx; vertical move offset - %dpx",
            xOffset, yOffset));

    Actions builder = new Actions(getDriver());

    Action dragAndDropBy = builder.dragAndDropBy(getWebElement(), xOffset, yOffset).build();
    dragAndDropBy.perform();
    return parent;
  }
  @Test
  @Use(
      field = "booleanValue",
      booleans = {false, true})
  public void testShowFooter() {
    setCurrentDateWithCalendarsTodayButtonAction.perform();
    calendarAttributes.set(CalendarAttributes.showFooter, booleanValue);
    PopupFooterControls proxiedFooterControls = calendar.openPopup().getProxiedFooterControls();
    if (booleanValue) {
      assertListOfWebElementsVisible(
          Arrays.asList(
              proxiedFooterControls.getApplyButtonElement(),
              proxiedFooterControls.getCleanButtonElement(),
              proxiedFooterControls.getTimeEditorOpenerElement(),
              proxiedFooterControls.getTodayButtonElement()));

    } else {
      assertListOfWebElementsNotVisible(
          Arrays.asList(
              proxiedFooterControls.getApplyButtonElement(),
              proxiedFooterControls.getCleanButtonElement(),
              proxiedFooterControls.getTimeEditorOpenerElement(),
              proxiedFooterControls.getTodayButtonElement()));
    }
  }
  @Override
  public void doubleClick(String locator) {
    WebElement webElement = getWebElement(locator);

    WrapsDriver wrapsDriver = (WrapsDriver) webElement;

    WebDriver webDriver = wrapsDriver.getWrappedDriver();

    Actions actions = new Actions(webDriver);

    actions.doubleClick(webElement);

    Action action = actions.build();

    action.perform();
  }
  @Test
  @Templates("plain")
  public void testLocale() {
    String locale = "ru";
    calendarAttributes.set(CalendarAttributes.locale, locale);
    DayPicker dayPicker = popupCalendar.openPopup().getDayPicker();
    List<String> weekDayShortNames = dayPicker.getWeekDayShortNames();
    List<String> expectedShortNames = Arrays.asList("Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб");
    assertEquals(weekDayShortNames, expectedShortNames);

    setCurrentDateWithCalendarsTodayButtonAction.perform();
    DateTime parsedDateTime =
        dateTimeFormatter
            .withLocale(new Locale(locale))
            .parseDateTime(popupCalendar.getInput().getStringValue());

    assertEquals(
        parsedDateTime.getDayOfMonth(),
        todayMidday.getDayOfMonth(),
        "Input doesn't contain selected date.");
    assertEquals(
        parsedDateTime.getMonthOfYear(),
        todayMidday.getMonthOfYear(),
        "Input doesn't contain selected date.");
    assertEquals(
        parsedDateTime.getYear(), todayMidday.getYear(), "Input doesn't contain selected date.");
  }
 @Test
 public void testValueChangeListener() {
   setCurrentDateWithCalendarsTodayButtonAction.perform();
   page.assertListener(
       PhaseId.PROCESS_VALIDATIONS,
       "value changed: null -> " + popupCalendar.getInput().getStringValue());
 }
  @Override
  public void mouseRelease() {
    WebElement bodyWebElement = getWebElement("//body");

    WrapsDriver wrapsDriver = (WrapsDriver) bodyWebElement;

    WebDriver webDriver = wrapsDriver.getWrappedDriver();

    Actions actions = new Actions(webDriver);

    actions.release();

    Action action = actions.build();

    action.perform();
  }
  @Override
  public void mouseDown(String locator) {
    WebElement webElement = getWebElement(locator);

    WrapsDriver wrapsDriver = (WrapsDriver) webElement;

    WebDriver webDriver = wrapsDriver.getWrappedDriver();

    Actions actions = new Actions(webDriver);

    actions.moveToElement(webElement);
    actions.clickAndHold(webElement);

    Action action = actions.build();

    action.perform();
  }
  @Override
  public void mouseOut(String locator) {
    WebElement webElement = getWebElement(locator);

    WrapsDriver wrapsDriver = (WrapsDriver) webElement;

    WebDriver webDriver = wrapsDriver.getWrappedDriver();

    Actions actions = new Actions(webDriver);

    actions.moveToElement(webElement);
    actions.moveByOffset(10, 10);

    Action action = actions.build();

    action.perform();
  }
 @Test
 @RegressionTest("https://issues.jboss.org/browse/RF-10821")
 public void testImmediate() {
   calendarAttributes.set(CalendarAttributes.immediate, Boolean.TRUE);
   setCurrentDateWithCalendarsTodayButtonAction.perform();
   page.assertListener(
       PhaseId.APPLY_REQUEST_VALUES, "value changed: null -> " + calendar.getInputValue());
   page.assertPhases(PhaseId.ANY_PHASE);
 }
  @Override
  public void dragAndDropToObject(
      String locatorOfObjectToBeDragged, String locatorOfDragDestinationObject) {

    WebElement objectToBeDraggedWebElement = getWebElement(locatorOfObjectToBeDragged);

    WrapsDriver wrapsDriver = (WrapsDriver) objectToBeDraggedWebElement;

    WebDriver webDriver = wrapsDriver.getWrappedDriver();

    Actions actions = new Actions(webDriver);

    WebElement dragDestinationObjectWebElement = getWebElement(locatorOfDragDestinationObject);

    actions.dragAndDrop(objectToBeDraggedWebElement, dragDestinationObjectWebElement);

    Action action = actions.build();

    action.perform();
  }
  @Test
  public void testDatePattern() {
    String pattern = "hh:mm:ss a MMMM d, yyyy";
    calendarAttributes.set(CalendarAttributes.datePattern, pattern);

    setCurrentDateWithCalendarsTodayButtonAction.perform();
    String calendarInputText = popupCalendar.getInput().getStringValue();
    dateTimeFormatter = DateTimeFormat.forPattern(pattern);
    try {
      DateTime dt = dateTimeFormatter.parseDateTime(calendarInputText);
      assertEquals(dt.getDayOfMonth(), todayMidday.getDayOfMonth());
      assertEquals(dt.getMonthOfYear(), todayMidday.getMonthOfYear());
      assertEquals(dt.getYear(), todayMidday.getYear());
    } catch (IllegalArgumentException ex) {
      fail(ex.getMessage());
    }
  }
 @Test
 @UseWithField(field = "booleanValue", valuesFrom = FROM_FIELD, value = "booleans")
 public void testShowApplyButton() {
   calendarAttributes.set(CalendarAttributes.showApplyButton, booleanValue);
   PopupFooterControls fc = popupCalendar.openPopup().getFooterControls();
   if (booleanValue) {
     assertVisible(fc.getApplyButtonElement());
   } else {
     assertNotVisible(fc.getApplyButtonElement());
     setCurrentDateWithCalendarsTodayButtonAction.perform();
     DateTime inputTime =
         dateTimeFormatter.parseDateTime(popupCalendar.getInput().getStringValue());
     assertEquals(inputTime.getDayOfMonth(), todayMidday.getDayOfMonth());
     assertEquals(inputTime.getMonthOfYear(), todayMidday.getMonthOfYear());
     assertEquals(inputTime.getYear(), todayMidday.getYear());
   }
 }
 @Test
 @Use(
     field = "booleanValue",
     booleans = {false, true})
 public void testShowApplyButton() {
   calendarAttributes.set(CalendarAttributes.showApplyButton, booleanValue);
   PopupFooterControls proxiedFooterControls = calendar.openPopup().getProxiedFooterControls();
   if (booleanValue) {
     assertVisible(proxiedFooterControls.getApplyButtonElement());
   } else {
     assertNotVisible(proxiedFooterControls.getApplyButtonElement());
     setCurrentDateWithCalendarsTodayButtonAction.perform();
     DateTime inputTime = dateTimeFormatter.parseDateTime(calendar.getInputValue());
     assertEquals(inputTime.getDayOfMonth(), todayMidday.getDayOfMonth());
     assertEquals(inputTime.getMonthOfYear(), todayMidday.getMonthOfYear());
     assertEquals(inputTime.getYear(), todayMidday.getYear());
   }
 }
  @Test
  @RegressionTest({
    "https://issues.jboss.org/browse/RF-9837",
    "https://issues.jboss.org/browse/RF-10085"
  })
  public void testDefaultTime() {
    final String t = "06:06";
    calendarAttributes.set(CalendarAttributes.defaultTime, t);
    setCurrentDateWithCalendarsTodayButtonAction.perform();
    String text = calendar.openPopup().getFooterControls().getTimeEditorOpenerElement().getText();
    assertTrue(text.equals(t), "Default time");

    // another check in time editor
    TimeEditor timeEditor = calendar.openPopup().getFooterControls().openTimeEditor();
    DateTime setTime = timeEditor.getTime();
    DateTime reference = todayMidday.withHourOfDay(6).withMinuteOfHour(6);
    assertEquals(setTime.getHourOfDay(), reference.getHourOfDay());
    assertEquals(setTime.getMinuteOfHour(), reference.getMinuteOfHour());
  }
  @Test
  @UseWithField(field = "booleanValue", valuesFrom = FROM_FIELD, value = "booleans")
  @Templates("plain")
  public void testShowFooter() {
    setCurrentDateWithCalendarsTodayButtonAction.perform();
    calendarAttributes.set(CalendarAttributes.showFooter, booleanValue);
    PopupFooterControls fc = popupCalendar.openPopup().getFooterControls();
    if (booleanValue) {
      assertTrue(fc.isVisible(), "Footer elements should be visible, when footer is rendered");
      assertListOfWebElementsVisible(
          Arrays.asList(
              fc.getApplyButtonElement(),
              fc.getCleanButtonElement(),
              fc.getTimeEditorOpenerElement(),
              fc.getTodayButtonElement()));

    } else {
      assertFalse(
          fc.isVisible(), "Footer elements should not be visible, when footer is not rendered");
    }
  }
  @Test
  @Use(
      field = "booleanValue",
      booleans = {false, true})
  public void testResetTimeOnDateSelect() {
    calendarAttributes.set(CalendarAttributes.resetTimeOnDateSelect, booleanValue);
    int minutes = 33;

    // set yesterday with some minutes
    MetamerPage.waitRequest(calendar, WaitRequestType.XHR)
        .setDateTime(todayMidday.plusMinutes(minutes).minusDays(1));
    // second time, but without minutes setting, to see if the minutes will reset
    setCurrentDateWithCalendarsTodayButtonAction.perform();

    int minutesAfterReseting =
        dateTimeFormatter.parseDateTime(calendar.getInputValue()).getMinuteOfHour();

    if (booleanValue) {
      assertEquals(minutesAfterReseting, 0);
    } else {
      assertEquals(minutesAfterReseting, minutes);
    }
  }
 /** Move mouse to the current element */
 public void moveMouse() {
   Actions builder = new Actions(webdriver);
   Action action = builder.moveToElement(element).build();
   action.perform();
 }
 /** Double Click on the element */
 public FluentWebElement doubleClick() {
   Action action = new Actions(FluentThread.get().getDriver()).doubleClick(webElement).build();
   action.perform();
   return this;
 }