quarta-feira, 22 de agosto de 2007

Selenium IDE aplicado a interfaces com Ajax

Fazer testes automatizados com o Selenium IDE numa interface web que possui chamadas assíncronas pode se tornar um problemão. Um exemplo simples é de um link que buscaria através de HttpRequest um recurso no servidor:

<a href="javascript:void(buscarDados())">Clique aqui</a>
Neste caso para testar o clique no link usando o selenium temos dois problemas. Se usarmos a função click o teste seguinte poderá falhar caso o servidor demore alguns segundos para responder. E se usarmos a função clickAndWait ocorrerá um timeout pois o selenium espera que a página inteira mude.

Para resolver esse tipo de situação é que existem as funções iniciadas por wait. Elas aguardam um bom período até que determinado elemento ou texto sejam impressos na página. Dessa forma podemos utilizar a função click e posteriormente fazer aguardar por determinado recurso, o que indicaria que o servidor respondeu.

No caso do nosso exemplo a função de callback do ajax, ao receber os dados do servidor imprime uma tag H1 do html com o texto "Dados do servidor". Dessa forma o teste ficaria na seguinte ordem:

open/teste.html
clicklink=Clique aqui
waitForElementPresent//h1
verifyText//h1Dados do servidor

Repare que após o clique no link, utilizamos a função waitForElementPresent para aguardar que o html tenha inserido uma tag h1 em qualquer parte dele. Depois que este é impresso eu utilizo a função verifyText para verificar se há alguma tag h1 inserida no html que possua o texto "Dados do servidor".

A versão do Selenium IDE utilizada é 0.8.7 e a versão do Firefox 2.0.0.1

Nenhum comentário:

Postar um comentário