Preenchimento de data errado com Selenium

Olá pessoal,

Estou com uma certa dificuldade em alguns testes automatizados que temos aqui na empresa.

Ocorre que, em determinados momentos, precisamos preencher uma data específica na aplicação que utilizamos, para filtrar um determinado documento.

O problema é que, momentos sim momentos não, o teste quebra porque a data está sendo preenchida errada.

Exemplo da data que deve ser preenchida:
Data inicial 03/11/2016 00:00 e data final com 03/11/2016 23:59

Exemplo da data que está sendo preenchida:
Data inicial 03/11/4022 01:59 e data final com 14/02/2017 23:59.

Código utilizado:

```
public void preencherData(String dataInicial, String dataFinal) {
	browser.waitForElementPresenceById(INPUT_DATA_INICIAL, 30000);
	browser.clearElementById(INPUT_DATA_INICIAL);
	browser.typeTextOnElementById(INPUT_DATA_INICIAL, dataInicial);
	browser.waitForElementPresenceById(INPUT_DATA_FINAL, 30000);
	browser.clearElementById(INPUT_DATA_FINAL);
	browser.typeTextOnElementById(INPUT_DATA_FINAL, dataFinal);
	
}

Percebam que no código acima já tentamos limpar o campo primeiro antes de informar as datas.

Alguém já passou por isso e soube resolver?

Att,
Renato Nunes

Ja tentou simular via SendKeys?

Hmm… tem certeza que o input da data esta sempre correto? rs… sei la né… ta estranho…

O ideal é saber algumas coisas como:

  1. Qual o componente de calendário tu estás utilizando e como ele faz o input da data quando tu seleciona
  2. Como tu estás passando a data… se tu cria ela através de um objeto tipo Calendar e depois formata ou passa apenas ela em formato dd/MM/yyyy sem colocar a hora

Tu consegue passar um exemplo de dados que tu utiliza neste script?

@bruwesley

Opa, tentamos sim…

Att,
Renato Nunes

@Leonardo-Galani

Sim, tanto que se ficar executando varias vezes, uma hora passa, outras não.

Att,
Renato Nunes

@Elias-Nogueira

  1. Usamos o Calendar do primeFaces…
  2. Não criamos o objeto ou formatamos antes. Fazemos a chamada e realizamos o input da informação conforme o componente espera, em teoria haha.
Cenário: Verifica detalhes do Auditor
Meta:
@Author Renato de Oliveira Nunes
Dado que acesso a tela de listagem de NF-e
Quando preencho a data inicial no filtro com 03/11/2016 00:00 e data final com 03/11/2016 23:59

Na etapa de preencher a data inicial no filtro, chamamos o step abaixo.

@When("preencho a data inicial no filtro com $dataInicial e data final com $dataFinal")
public void preencherData (String dataInicial, String dataFinal) {
	getPaginas().getPaginaOperacaoNfe().preencherData(dataInicial, dataFinal);

Que por sua vez chama:

public void preencherData(String dataInicial, String dataFinal) {
	browser.waitForElementPresenceById(INPUT_DATA_INICIAL, 30000);
	browser.clearElementById(INPUT_DATA_INICIAL);
	browser.typeTextOnElementById(INPUT_DATA_INICIAL, dataInicial);
	browser.waitForElementPresenceById(INPUT_DATA_FINAL, 30000);
	browser.clearElementById(INPUT_DATA_FINAL);
	browser.typeTextOnElementById(INPUT_DATA_FINAL, dataFinal);

Att,
Renato Nunes

@ronunes O pattern do Calendar no PrimeFaces é o mesmo que o teu formato de String (dd/MM/yyyy hh:mm)?

Eu recomendo você usar o mesmo patter que está no componente, transformá-lo em data e formatá-lo.

@Elias-Nogueira

É sim, o mesmo. Estava mexendo por aqui e acabei de descobrir que aparentemente, o meu método que limpa os dois campos do calendar não está de fato limpando, mas sim apenas clicando. Provavelmente por isso na hora de realizar o input das datas esteja se perdendo.

Deixei apenas assim e os testes estão passando.

	public void preencherData(String dataInicial, String dataFinal) throws InterruptedException {
		browser.waitForElementPresenceById(INPUT_DATA_INICIAL, 30000);
		browser.waitForElementPresenceById(INPUT_DATA_FINAL, 30000);
		browser.typeTextOnElementById(INPUT_DATA_INICIAL, dataInicial);
		browser.typeTextOnElementById(INPUT_DATA_FINAL, dataFinal);
		
	}

Agora vou ter que ver porque o carinha não está realizando o seu serviço de limpeza! :)

Att,
Renato Nunes

@ronunes disse em Preenchimento de data errado com Selenium:

@Elias-Nogueira

É sim, o mesmo. Estava mexendo por aqui e acabei de descobrir que aparentemente, o meu método que limpa os dois campos do calendar não está de fato limpando, mas sim apenas clicando. Provavelmente por isso na hora de realizar o input das datas esteja se perdendo.

Deixei apenas assim e os testes estão passando.

	public void preencherData(String dataInicial, String dataFinal) throws InterruptedException {
		browser.waitForElementPresenceById(INPUT_DATA_INICIAL, 30000);
		browser.waitForElementPresenceById(INPUT_DATA_FINAL, 30000);
		browser.typeTextOnElementById(INPUT_DATA_INICIAL, dataInicial);
		browser.typeTextOnElementById(INPUT_DATA_FINAL, dataFinal);
		
	}

Agora vou ter que ver porque o carinha não está realizando o seu serviço de limpeza! :)

Não consegue printar o que tem no campo antes, para analisar se está “limpo” ou não? Dependendo pode colocar uma validação. (se não está limpo, hora de colocar ele na limpeza…heehe)

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.