Topicos Recents
-
Dica de ferramentas para testes visuais
Geral3 -
Problemas com o nightwatch
Geral1 -
Ajuda com Curso
Geral5 -
Como você mapearia este elemento?
Geral12 -
Questionário sobre testes automatizados em aplicativos móveis
Geral4 -
A arte de desenvolver testes - Cucumber + Capybara
Artigos e Tutoriais44 -
Como abrir todos os link de uma página
Geral2 -
QA Analyst/Project Lead (Florianópolis/Remote)
Vagas1 -
QA Engineer - (Pinheiro)
Vagas1 -
Teste de Stress
Geral5 -
Tester que não programa, leia isso por favor.
Artigos e Tutoriais6 -
Executar tags em features diferentes no Cucumber
Geral1 -
QA, trate sua automação como software
Artigos e Tutoriais5 -
[Survey] - Testes automatizados em aplicativos móveis
Geral6 -
Cucumber para javascript Duvida
Artigos e Tutoriais2 -
Vagas QA PL e Sr - São Paulo
Vagas1 -
Episode 010 - The Automate or Die Special - The Evil Tester Show
Feed de Blogs e Posts2 -
Ruby In Tests
Artigos e Tutoriais7 -
Livros
Geral19 -
Anexar printscreen ao Allure Report
Geral28
Não consigo automatizar o clique do comando - Webdriver Ruby - Cucumber
-
na verdade é isso o que o erro está dizendo… que foi feito o trigger em outro lugar. (algo com mesmo id)
o codigo geralmente é lido de cima para baixo… ou seja… se o id que vc procura tiver mais de 2 referencias… antigamente no selenium ele clicava na primeira… agora ele da um erro de multiplas referencias… usa um xpath ou outra forma de indentificacão para ver se funciona.
-
Teste o seguinte para selecionar o primeiro elemento que possua tal
xpath
:@navegador.find_element(:xpath, "(//*[@id='SAVE'])[1]").click
-
Fiz a alteração como sugerido, mas exibiu outro erro:
E clicar o botão “SAVE” # features/step_definitions/criarConta.rb:91
invalid selector: Unable to locate an element with the xpath expression (//[@id=‘SAVE’)[1] because of the following error:
SyntaxError: Failed to execute ‘evaluate’ on ‘Document’: The string '(//[@id=‘SAVE’)[1]’ is not a valid XPath expression.
(Session info: chrome=60.0.3112.101)
(Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.10.0-33-generic x86_64) (Selenium::WebDriver::Error::InvalidSelectorError)
./features/step_definitions/criarConta.rb:92:in/^clicar o botão "([^"]*)"$/' features/criarConta.feature:30:in
E clicar o botão “SAVE”’********* -
@davidson-jacob Tá faltando o asterisco no seu XPath, o erro tá dizendo que a expressão está inválida…
E em vez de asterisco, é melhor colocar o tipo do elemento, no caso é um
input
, então fica"(//input[@id='Save'])[1]"
-
Fiz alteração usando o input o problema que está exibindo a primeiro mensagem de erro.
Quando(/^clicar o botão "([^"]*)"$/) do |botaoSave| @navegador.find_element(:xpath, "(//input[@id='SAVE'])[1]").click end
unknown error: Element <input title=“Save” accesskey=“a” class=“button primary” onclick=“var _form = document.getElementById(‘EditView’); _form.action.value=‘Save’; if(check_form(‘EditView’))SUGAR.ajaxUI.submitForm(_form);return false;” type=“submit” name=“button” value=“Save” id=“SAVE”> is not clickable at point (287, 20). Other element would receive the click: <a href="#" id=“grouptab_1” class=“dropdown-toggle grouptab” data-toggle=“dropdown”>…</a>
-
É o que o Galani já falou anteriormente, só ler a mensagem de erro… esse link com id
grouptab_1
tá na frente do botão que vc quer clicar, pega um screenshot antes do teste clicar no botão e coloca aqui pra entendermos como é essa tela. Mostra onde tá esse link e os botões de Save. -
@stefanteixeira Era isso mesmo… Tinha o dropdown do id grouptab_1 que estava ficando em cima do botão Save. Depois da alteração da step_definitions conseguir o clique no botão Save.
Obrigado pelas dicas e paciência de todos.Quando(/^clicar o botão "([^"]*)"$/) do |botaoSave| @navegador.find_element(:xpath, "(//input[@id='SAVE'])[2]").click end
-
@davidson-jacob aparentemente, o 2º botão de Salvar não tem nenhum elemento “na frente”, mas se tentar Salvar com o 1º botão vai ocorrer o mesmo erro. Agora que você ajustou o mapeamento do elemento, o ideal é que você consiga interagir com qualquer um dos botões de Salvar (e qualquer outro elemento da tela que seja necessário).
Caso aconteça novamente com outros elementos (comigo já aconteceu com bastante frequência em alguns projetos) sugiro:
- Actions + move_to do Selenium Webdriver - Em resumo, o driver vai “ir” até o elemento antes de interagir com ele, trazendo ele para a parte visível da tela.
- Scroll/centralizar elemento via javascript: Se o Actions não funcionar, você tentar interagir com a tela via javascript, dando scroll, centralizando o elemento, etc
Se quiser, podes tentar uma das estratégias acima testando com o botão save[1], espero que ajude neste caso e em próximos, se ocorrer
– Samuel Lucas
-
@samuellucas Realmente estou tendo problemas para localizar o elemento. Estou usando outro exemplo e ainda não conseguir achar onde está o erro.
Step defintionsQuando(/^clicando no botão Add to cart "([^"]*)"$/) do |botaoAdd| #el = @navegador.find_element(id: "add_to_cart") el = @navegador.find_element(name: 'Submit') #@navegador.action.context_click(el).perform @navegador.action.move_to(el).click end
Código do botão Add to cart
<div class="box-cart-bottom"> <div> <p id="add_to_cart" class="buttons_bottom_block no-print"> <button type="submit" name="Submit" class="exclusive"> <span>Add to cart</span> </button> </p> </div>
Erro exibido:
E clicando no botão Add to cart "add_to_cart" # features/step_definitions/realizarCompra.rb:62 no such element: Unable to locate element: {"method":"name","selector":"Submit"} (Session info: chrome=60.0.3112.113)
-
Já tentou buscar por
id: 'add_to_cart'
? Também não entendi a necessidade dessa actionmove_to
, com que intuito vc usou isso? -
@stefanteixeira Pelo comando @navegador.find_element(:id, ‘add_to_cart’).click não é possível encontrar o elemento.
O no such element: Unable to locate element: {"method":"id","selector":"add_to_cart"} (Session info: chrome=60.0.3112.113)
-
@davidson-jacob ah cara, agora que eu vi a página, esse botão tá em uma nova janela, vc precisa “mudar” pra essa janela pra poder interagir com os elementos dela.
No WebDriver em Ruby tem que pesquisar como fazer… Pesquisa aí no Google “switch window webdriver ruby” pra mudar pra janela nova, depois que conseguir aí sim busca por esse botão.
PS: Pq vc não usa o Capybara? É muito simples e ridiculamente fácil fazer essas coisas. Se vc pesquisar por “capybara” no próprio Agile Testers vc vai encontrar um monte de tutoriais, é bem tranquilo, escreve menos código e funciona muito bem. Uso desde o início do ano e não troco por nada, meus testes são bem estáveis e não me dão muita dor de cabeça.
-
@stefanteixeira Estou estudando automação, pode ser qualquer framework. Valeu pela dica.
-
Saquei… Capybara é o mais usado em Ruby e o projeto é bem ativo, estão sempre com features novas.
-
@stefanteixeira Show de bola o framework Capybara. Conseguir criar vários scripts. Teve duas dúvidas que ainda não conseguir resolver. Valeu pela dica.