Selecionar opção em um list - Ruby+Capybara | Agile Testers
Topic created · 8 Posts · 361 Visualizações
Roberto de Lima última edição por Roberto de Lima
Estou com uma dúvida quanto ao código para realizar a seleção de valores diante deste HTML, neste caso preciso encontrar e clicar na opção OP6. Neste projeto de automação utilizo Ruby, Cucumber e Capybara.
<ul id="select-options-3cef4e70-c7b5-41d9-8673-5388f45c1853" class="dropdown-content select-dropdown w-100 active" style="width: 219px; position: absolute; top: 0px; left: 0px; opacity: 1; display: block;"><li class="active">
<li class=" "><span class="filtrable"> OP1</span></li>
<li class=" "><span class="filtrable"> OP2</span></li>
<li class=" "><span class="filtrable"> OP3</span></li>
<li class=" "><span class="filtrable"> OP4</span></li>
<li class=" "><span class="filtrable"> OP5</span></li>
<li class=" "><span class="filtrable"> OP6</span></li></ul>
Alguém já passou por esta dificuldade e conseguiria ajudar?
Vou considerar que vc precisa clicar no elemento html <ul> para que você possa ver a lista… (pq tem um sytle="display:block")
Olha… vc pode ser masoquista e esse elemento por xpath (porque esse ID parece ser gerado no processo de build) OU vc pode pedir para um desenvolvedor (ou vc mesmo) colocar um identificação chamada data-test-id, que é um ID que não impacta nada a aplicação e vc consegue mapear facilmente. ( https://kentcdodds.com/blog/making-your-ui-tests-resilient-to-change) ( Popularizado com react mas nao precisa usar react para usar data-test-id por ai…)
Depois que vc acha o elemento ul, vc pode mandar um click baseado no value da lista ou colocar identificação nos elementos da lista :)
david.cs última edição por
Estou iniciando em automação, então se falar algo fora do contexto me corrijam.
Uma forma que eu acredito que pode dar certo, é realizar uma localização pelo class do elemento e enviar fazer um jquery para alterar o id do elemento para que você consiga localizar sem dificuldades. Segue exemplo:
script = '$('.dropdown-content select-dropdown w-100 active').attr("id","temp");'
caso queira armazenar em uma variável, coloque entre aspas simples o script.
esse comando jquery localiza o elemento e altera o atributo (attr), no caso o atributo id.
assim vc consegue localizar o elemento ul por id.
depois pode seguir em frente para selecionar o elemento da lista que precisa.
Eleutério última edição por Eleutério
Leonardo Galani última edição por @david.cs
@david-cs noooo … por favor… não faça isso :(
Jquery is dead… se for fazer manipulação do DOM, use javascript vanilla… só projetos legado usam jquery… e olhe lá… tenha dó de quem vai pegar seu codigo fazendo coisas complicadas sem sentido.
Ela pode usar classSelector como vc falou… mas essa classe ta com cara de genérica e se tiver mais de um dropdown na pagina, vai dar conflito de ambiguidade.
Leonardo Galani última edição por @Eleutério
@Jonathan-Soares não vai funcionar pq é um dropdown disfarçado de <ul> … ou seja… provavelmente os <li> estão style="display: hidden"
Eleutério última edição por @Leonardo Galani
Roberto de Lima última edição por
Pessoal me desculpe… precisei ficar ausente por uns dias.
Bom parti para a solução do data-test-id pedi para os devs passarem a inserir esta tag e facilitou a automação, passei a mapear por eles.