Skip to content

Instantly share code, notes, and snippets.

@eliasnogueira
Last active May 4, 2017 16:40
Show Gist options
  • Save eliasnogueira/9072375 to your computer and use it in GitHub Desktop.
Save eliasnogueira/9072375 to your computer and use it in GitHub Desktop.
Dica para problemas de IDs dinâmicos e falha com execução rápida no Selenium IDE

Na lista do Selenium-Brasil um dos colaboradores teve a seguinte duvida:

  1. O controlador de velocidade de execução dos testes (em destaque no print em anexo) começa a pular alguns passos, quando selecionado "Fast";

  2. Os testes no Selenium IDE só podem ser realizados por meio de identificadores dos componentes? por exemplo, se a caixa de texto de uma aplicação web possuir um ID "nomeCliente" não haverá problemas na execução dos testes, porém se este mesmo componente for alterado para um ID auto-increment não é possível realizar testes com o componente.

Achei interessante colocar de uma forma pública a minha resposta para este questionamento, que segue abaixo e pode ajudar vocês, caso tenham a mesma dúvida.

Resposta para a pergunta 1: evite usar a barra de fast-slow porque ela pode te trazer resultados falso-positivos como o que tu tem de, quando colocar a barra como fast (que deveria ser sempre o padrão), ele apresentar algum erro que não encontrou o elemento. Isso se dá, na maioria da vezes, por algum "ajax": o campo demorar para aparecer, alguma combo demorar para carregar, um texto demorar para aparecer, etc...

Dê uma olhada nos comandos waitFor... do Selenium IDE http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#the-waitfor-commands-in-ajax-applications Eles vão garantir, mesmo que com a execução rápida, ele espere por esses elementos que demoram.

Observação: tente nunca utilizar o slow da barra fast-slow. Isso fará com que os teus testes demorem demais quebrando uma regra básica de automação que é executar os testes o mais rápido que ele puder.

Resposta para a pergunta 2: IDs dinâmicos são sempre um problema. Não há outra forma de localização no Selenium IDE a não ser por um elemento. Ai temos diversos tipos de localização que tu podes olhar no link abaixo: http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#locating-elements

Quando você tem elementos com números que, teoricamente, tem um auto-incremento você pode usar funções de XPath ou formas de localizar via CSS (sub-string matching) quando tu tiver, por exemplo, prefixos, sufixos ou contem. Exemplos: nome-123, 123-nome, 123-nome-123

A dica é tu dar uma olhada nos dois links abaixo: http://saucelabs.com/resources/selenium/css-selectors http://software-testing-tutorials-automation.blogspot.com.br/2013/06/xpath-tutorials-identifying-xpath-for.html

Fora isso uma outra forma de localização de elementos dinâmicos é se basear em um outro elemento que tenha uma forma de localização unica (ID ou name fixo) e, a partir dele, localizar o elemento necessário.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment