package br.com.pixeon.pages;
import org.openqa.selenium.By;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import br.com.pixeon.util.Webdriver;
/**
* Disponibiliza os recursos para manipular os elementos dentro do 'topNavBar',
* essa estrutura será exibida após o usuário realizar o login.
*
*/
public class Header {
public Header() {
}
// INICIO CLINICA
/**
* Seleciona a clínica do usuário, caso ele esteja associado a mais de uma
* clínica.
*
* @param nomeClinica
* Nome da clínica que o usuário vai se conectar.
*/
public void selecionarClinica(String nomeClinica) {
Select lista = new Select(Webdriver.obterInstancia().findElement(By.id("selClinicOptions")));
lista.selectByVisibleText(nomeClinica);
pressionarBotaoAceitar();
}
/**
* Verifica se o formulário para seleção da clínica está sendo exibido.
*
* @return TRUE caso esteja visível e FALSE caso contrário.
*/
public boolean existeFormClinica() {
boolean resultado = false;
try {
Webdriver.obterInstancia().findElement(By.id("formClinicSelect"));
resultado = true;
} catch (Exception e) {
System.out.println("EXCEPTION: existeFormClinica()." + e);
}
return resultado;
}
public void pressionarBotaoAceitar() {
try {
Webdriver.obterInstancia().findElement(By.id("acceptedClinicSelect")).click();
} catch (Exception e) {
System.out.println("EXCEPTION: pressionarBotaoAceitar()." + e);
}
}
public String retornaNomeClinicaAtual() {
String resultado = null;
try {
resultado = Webdriver.obterInstancia().findElement(By.id("menuClinicNameMoreThanOne")).getAttribute("title");
} catch (Exception e) {
System.out.println("EXCEPTION: retoraNomeClinicaAtual()." + e);
}
return resultado;
}
// FIM CLINICA
/**
* Verifica se o menu do usuário foi carregado na página.
*
* @return TRUE caso tenha localizado o menu do usuário e FALSE caso contrário.
*/
public boolean menuUsuarioVisivel() {
boolean resultado = false;
try {
WebDriverWait wait = new WebDriverWait(Webdriver.obterInstancia(), 15);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("userSideNavBar")));
resultado = true;
} catch (Exception e) {
resultado = false;
}
return resultado;
}
/**
*
*/
public void abrirMenuUsuario() {
try {
Webdriver.obterInstancia().findElement(By.id("menuUser")).click();
} catch (StaleElementReferenceException e) {
System.out.println("EXCEPTION: abrirMenuUsuario()." + e);
}
}
private boolean menuUsuarioExpandido(){
boolean resultado = false;
try {
resultado = Boolean.parseBoolean((Webdriver.obterInstancia().findElement(By.id("menuUser")).getAttribute("aria-expanded")));
} catch (Exception e) {
System.out.println("EXCEPTION: menuUsuarioExpandido()." + e);
}
return resultado;
}
public void acessarMenuSair() {
try {
abrirMenuUsuario();
if(menuUsuarioExpandido()){
Webdriver.obterInstancia().findElement(By.id("userNavBarSair")).click();
}
} catch (Exception e) {
System.out.println("EXCEPTION: acessarMenuSair()." + e);
}
}
public void acessarItemMenu(String nomeItem){
String item = "act_"+nomeItem;
if(!menuUsuarioExpandido()){
abrirMenuUsuario();
}
Webdriver.obterInstancia().findElement(By.id(item)).click();
}
// TODO: método para pegar CRM;
// TODO: método para pegar nome do usuário;
// TODO: método para gerir as abas das clínicas... Estudar melhor como fazer
} // fim classe