Boa tarde Pessoas,
estou aqui para compartilhar um pequeno método que precisei criar para alguns testes que estava fazendo. No caso estava precisando testar a quantidade de caracteres que um campo do tipo input text era capaz de receber.
Segue o método e sua explicação:
-Então, o método seguinte recebe o caminho xpath do campo que quer realizar o teste, e um número que caso o input text não tenha o atributo : maxlength, será o número de tentivas que serão feitas para tentar encontrar o máximo de caracteres que o campo aceita.
- O método retorna o número inteiro de caracteres que um campo aceita.
- Primeiro ele verifica se o input tem o atributo maxlenght. Se tiver, o valor que o método retorna é o que está no maxlenght convertido para integer.
- Caso não tenha o maxlenght (através de javascript pode se fazer limitação de caracteres em campos), o while vai adicionar um valor no campo até atingir o seu limite. Atingido este limite o método retorna a quantidade de caracteres.
public int getTamanhoCampo(String xpath, int numeroMaximo){
int x = 0;
int cont = 0;
if (driver.findElement(By.xpath(xpath)).getAttribute("maxlength") != null){
cont = Integer.parseInt(driver.findElement(By.xpath(xpath)).getAttribute("maxlength"));
}else{
while(x == cont){
driver.findElement(By.xpath(xpath)).sendKeys("1");
cont = (driver.findElement(By.xpath(xpath)).getAttribute("value")).length();
x = x+1;
if(x == numeroMaximo){
System.out.println("O contador atingiu o número máximo:"+numeroMaximo);
break;
}
}
}
- Uso: Em meu projeto utilizei da seguinte forma nos testes (um exemplo):
Assert.assertEquals(50, telaNovo.getTamanhoCampo("//*[@id='txtMail']", 52));
- Caso o tamanho seja diferente de 50 caracteres o ASSERT dispara um exceção.
é isso pessoal, se alguém tem alguma forma diferente de fazer o mesmo processo, compartilhe para tentarmos achar a melhor forma de fazer este testes..
Obrigado!