package org.expressolivre.cte.pages.calendar; import org.expressolivre.cte.common.Constants; import org.expressolivre.cte.pages.common.Page; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; /** * @author L.F.Estivalet (Serpro) * * Created on Feb 8, 2011 at 9:13:50 AM * */ public class CalendarPage extends Page { /** Combo para selecionar categoria. */ @FindBy(name = "cat_id") private WebElement category; @FindBy(name = "filter") private WebElement filter; @FindBy(name = "owner") private WebElement owner; /** Campo para pesquisar agenda. */ @FindBy(xpath = "/html/body/div[@id='divSubContainer']/table/tbody/tr/td[@id='tdAppbox']/div[@id='divAppbox']/table[@id='tableDivAppbox']/tbody/tr/td/table[@id='calendar_head_table']/tbody/tr/td[4]/nobr/form/div/input[9]") private WebElement searchText; /** Botao para acionar a pesquisa na agenda. */ @FindBy(xpath = "//table[@id='calendar_head_table']/tbody/tr/td[4]/nobr/form/div/input[@id='']") private WebElement searchButton; /** Combo para selecionar mes. */ @FindBy(xpath = "//table[@id='tableDivAppbox']/tbody/tr/td/font/table/tbody/tr/td[2]/font[1]/form/select") private WebElement date; /** Combo para selecionar ano. */ @FindBy(name = "year") private WebElement year; /** * @param driver */ public CalendarPage(WebDriver driver) { super(driver); // TODO Auto-generated constructor stub } /** * Abre a visao diaria da agenda. * * @return Pagina da visao diaria da agenda. */ public CalendarTodayViewPage openTodayView() { super.clickElement(By .xpath("//table[@id='calendar_head_table']/tbody/tr/td[2]/a/img")); return PageFactory.initElements(driver, CalendarTodayViewPage.class); } /** * Abre a visao semanal da agenda. * * @return */ public CalendarWeeklyViewPage openWeeklyView() { super.clickElement(By .xpath("//table[@id='calendar_head_table']/tbody/tr/td[3]/a/img")); return PageFactory.initElements(driver, CalendarWeeklyViewPage.class); } /** * Abre a visao mensal da agenda. * * @return */ public CalendarMonthlyViewPage openMonthlyView() { super.clickElement(By .xpath("//table[@id='calendar_head_table']/tbody/tr/td[4]/a/img")); return PageFactory.initElements(driver, CalendarMonthlyViewPage.class); } /** * Abre a visao anual da agenda. * * @return */ public CalendarYearlyViewPage openYearlyView() { super.clickElement(By .xpath("//table[@id='calendar_head_table']/tbody/tr/td[5]/a/img")); return PageFactory.initElements(driver, CalendarYearlyViewPage.class); } /** * Abre o visao diaria para uma data especifica. * * @param data * Data no formato yyyyMMdd. * @return */ public CalendarTodayViewPage openTodayView(String data) { driver.get(Constants.URL + "/index.php?menuaction=calendar.uicalendar.day&date=" + data); return PageFactory.initElements(driver, CalendarTodayViewPage.class); } /** * Abre tela para adicionar novo compromisso. * * @param date * Data do compromisso. */ public void openAppointmentPage(String date) { driver.get(Constants.URL + "/index.php?menuaction=calendar.uicalendar.add&date=" + date); } /** * @param id * @return */ public AppointmentViewPage openAppointmentViewPage(String id) { driver.get(Constants.URL + "/index.php?menuaction=calendar.uicalendar.view&cal_id=" + id); return PageFactory.initElements(driver, AppointmentViewPage.class); } /** * @param id * @param date * @return */ public AppointmentViewPage openAppointmentViewPage(String id, String date) { driver.get(Constants.URL + "/index.php?menuaction=calendar.uicalendar.view&cal_id=" + id + "&date=" + date); return PageFactory.initElements(driver, AppointmentViewPage.class); } /** * Coloca um texto para pesquisar na agenda. * * @param searchText * Texto a ser pesquisado. */ public void setSearchText(String searchText) { this.searchText.clear(); this.searchText.sendKeys(searchText); } /** * Dispara a pesquisa na agenda. * * @return Pagina de resultados da pesquisa. */ public AppointmentSearchResultPage searchAppointment() { this.searchButton.click(); return PageFactory.initElements(driver, AppointmentSearchResultPage.class); } /** * Seleciona uma categoria para filtragem. * * @param category * Categoria selecionada. */ public void setCategoryFilter(String category) { super.setComboValue(this.category, category); } /** * Seleciona um mes para filtragem. * * @param monthYear * Mes selecionado no formato "nome do ano" "ano" (ex: Agosto * 2011) */ public CalendarMonthlyViewPage setMonthFilter(String monthYear) { super.setComboValue(this.date, monthYear); return PageFactory.initElements(driver, CalendarMonthlyViewPage.class); } }