Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Page Source Selenium

Então pessoa estou utilizando SpecFlow e selenium em um projeto no meu trabalho e gostaria de uma ajuda em relação ao selenium.

navegador.Navigate().GoToUrl("url");
navegador.FindElement(By.Name("linkImoveis")).Click();
var existe = navegador.PageSource.Contains("Luciano");
Assert.AreEqual("Luciano", existe);

O codigo acima representa uma url de teste onde a home so tem uma mensagem de bem vindo e um NAV escrito Home e Imoveis. Quando clico em Imoveis ele me redireciona a outra URL com uma lista de imoveis porem ele da um erro na parte do PageSource porque ele esta pegando o HTML da Home e nao da pagina que foi redirecionado quando clickei no link Imoveis.

Como eu faço para pegar a PageSource da pagina atual e não da que eu usei no GoToUrl

2 respostas

Luciano, uma hipótese é que o Selenium está procurando o elemento antes da segunda página ter sido completamente carregada. Se for isso você precisa pesquisar sobre como configurar implicit wait ou explicit wait. Talvez o link abaixo possa auxiliar:

https://www.guru99.com/implicit-explicit-waits-selenium.ht

Tive esse problema quando fiz o curso de Selenium. Além de configurar o explicit/implict wait outro modo usando Java foi colocar Thread.sleep() para aguardar algum tempo também.

solução!

Consegui resolver o problema , pra quem estiver com o mesmo problema e so usar a classe WebDriverWait que no caso ficaria assim

navegador.Navigate().GoToUrl("url");
navegador.FindElement(By.Name("linkImoveis")).Click();
var existe = new WebDriverTest(navegador, TimeSpan.fromSeconds(10)).Until(nav => nav.PageSource.Contains("Luciano"));
Assert.AreEqual("Luciano", existe);