Conflito entre aplicações Ajax e testes em Selenium
13 respostas
J
jeh_dias
Olá , bom dia
Estou testando um sistema web , usando o selenium
Quando vou testar a inserção de um novo usuário , os campos obrigatórios nome e sobrenome só aceitam letras , porém estou levando o teste a erros e estou colocando números
Assim que coloco números , a borda do campo que estava vermelha fica azul , indicando que não vou conseguir inserir este usuário
O campo responsável pela borda colorida é esse border-bottom-color , o que poderia fazer para testar essa mudança de cor ?
<divclass="line"><label>Nome</label><inputrequiredtype="text"id="nome"class="input-xlarge"placeholder="Primeiro nome apenas"name="nome"value="<?phpecho$this->nome?>"data-content="Apenas letras."></div>
J
javaflex
Geralmente problemas com Selenium x Ajax são relacionados a esperar o Ajax retornar. Você falou em Ajax no título mas não colocou as partes de códigos relacionadas a ele.
J
jeh_dias
Olá , o código Ajax não é minha autoria .
Mas no caso como você falou que problemas com Ajax são relacionados a esperar o Ajax retornar , esse problema poderia ser resolvido com o comando waitFor() ?
Obrigada .
J
javaflex
jeh_dias:
Olá , o código Ajax não é minha autoria .
Mas no caso como você falou que problemas com Ajax são relacionados a esperar o Ajax retornar , esse problema poderia ser resolvido com o comando waitFor() ?
Obrigada .
waitFor() logicamente vai funcionar no tempo cravado que você colocar. Mas se quiser saber exatamente quando o Ajax acabou de trabalhar, você testa “jQuery.active == 0” via jquery, fazendo um loop com algum sleep pequeno até que a condição jquery seja satisfeita.
J
jeh_dias
A questão é , quero resolver conflitos de validação de campos , através das cores da borda do campo , pois elas mudam quando o campo contém caracteres inválidos .
Eu não vejo como esses comandos que esperam um tempo antes da validação ou saber quando o Ajax acabou de trabalhar , poderiam me ajudar . Ou vejo quando ele acaba de trabalhar e ai faço o teste que preciso ?
waitForCondition é um método que ja faz mastigado o que falei. Vai ficar testando até conseguir, só tem que passar um timeout pra a coisa não ficar infinita.
J
jeh_dias
Obrigada , vou ler e depois posto dúvidas .
J
jeh_dias
O comando waitForCondition() necessita de um script e um timeout . Esse script é o código em JavaScript que tem o Ajax , certo ?
Não entendi como construir esse script no meu caso . Colocar o script em JavaScript , mas vou ter true e false . Como pegar a transformação ?
Pensando por outro lado , se conseguir colocar o código da transformação , e o retorno for true , quer dizer que a transformação ocorreu e eu consegui o que queria . Mas a questão é o código dessa transformação .
Obrigada .
J
javaflex
Segue esses passos. O código abaixo é em C# e meramente ilustrativo pra voce entender a lógica e implementar o seu em Java. As classes e métodos do selenium webdriver são as mesmas usadas para Java , C#, etc. Só mesmo diferença de padrão que no java os nomes dos métodos devem começar em letra minúscula.