StaleElementReferenceException ao tentar clicar no mês em um Datepicker

52 views
Skip to first unread message

Leandro Alves dos Santos

unread,
Feb 24, 2016, 3:48:04 PM2/24/16
to Selenium Brasil
Boa tarde Pessoal, 

Estou tentando clicar na informação de "mês" em Datepicker, e o seguinte erro é apresentando pelo Selenium WebDriver:

"org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document"

Podem me ajudar ?
month-datepicker.png

Elias Nogueira

unread,
Feb 24, 2016, 5:16:36 PM2/24/16
to Leandro Alves dos Santos, Selenium Brasil
Leandro, posta o teu trecho de código aqui....
Mas esse erro geralmente dá quando tu guarda um elemento via WebElement e tu tenta usa-lo novamente depois que a página sofreu um refresh. (perde a referência do objeto).


Abraço!


--
Elias Nogueira


--
Visite em https://groups.google.com/d/forum/selenium-brasil
---
Você recebeu essa mensagem porque está inscrito no grupo "Selenium Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para selenium-bras...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/selenium-brasil.
Para mais opções, acesse https://groups.google.com/d/optout.

Leandro Alves dos Santos

unread,
Feb 24, 2016, 5:29:37 PM2/24/16
to Selenium Brasil, leandrosa...@gmail.com
Opa, Elias.

Segue metodo:

Na ação de clique no mês no calendário (em destaque), o problema ocorre.



public ActivitiesPage selectDateOnTheCalendar(String day, String month, String year){
WebElement yearOntheCalendar = driver.findElement(
By.xpath("//tr/td/span[@class='year' and contains(text(), '"+ year +"' )]"));
WebElement monthOntheCalendar = driver.findElement(
By.xpath("//tr/td/span[@class='month' and contains(text(), '"+ month +"' )]"));
WebElement dayOntheCalendar = driver.findElement(
By.xpath("//tbody/tr/td[contains(text(), '" + day + "')]"));
WebElement linkToMonthsOnCalendar = driver.findElement(
By.xpath("//div[@class='datepicker-days']/descendant::thead/tr/th[@class='datepicker-switch']"));
WebElement linkToYearsOnCalendar = driver.findElement(
By.xpath("//div[@class='datepicker-months']/descendant::thead/tr/th[@class='datepicker-switch']"));

linkToMonthsOnCalendar.click();
System.out.println("Clicou no link do mês no calendário");
linkToYearsOnCalendar.click();
System.out.println("Clicou no link do Ano no calendário");
yearOntheCalendar.click();
System.out.println("Clicou no Ano no calendário");
monthOntheCalendar.click();
        System.out.println("Clicou no Mês no calendário");
dayOntheCalendar.click();
System.out.println("Clicou no Dia no calendário");
return this;
}

Elias Nogueira

unread,
Feb 24, 2016, 5:41:12 PM2/24/16
to Leandro Alves dos Santos, Selenium Brasil
Remove todos os WebElement e deixa a chamada direta pelo driver.findElement.....
Exemplo:

//yearOntheCalendar
driver.findElement(By.xpath("//tr/td/span[@class='year' and contains(text(), '"+ year +"' )]")).click();


--
Elias Nogueira

Leandro Alves dos Santos

unread,
Feb 24, 2016, 7:02:33 PM2/24/16
to Selenium Brasil, leandrosa...@gmail.com
Elias,
Deu certo, obrigado!
Reply all
Reply to author
Forward
0 new messages