2017-07-13 1 views
0

Je travaille sur un projet Rails qui utilise Capybara pour les tests frontaux. Je me suis retrouvé dans une situation où j'ai des étiquettes div en double avec le même ID. Comment puis-je utiliser capybara scoping de sorte que je sélectionne seulement l'un d'entre eux et effectuer mes tests dans ce div?J'ai deux divs avec la même classe et ID.how est-ce que j'utilise dedans, pour que je puisse simuler des clics?

+0

Pouvez-vous corriger le HTML pour être valide à la place? Les attributs 'id' sont supposés être uniques. –

+0

la réparation du code HTML rompt JavaScript. –

Répondre

1

Compte tenu du html

<div id="wrapper1"> 
    <div id="conflict">...</div> 
</div> 
<div id="wrapper2"> 
    <div id="conflict">...</div> 
</div> 

alors vous devriez être en mesure de le faire

within("#wrapper1") do 
    find("#conflict") # will find the matching element inside the wrapper1 div 
end 

Cependant, vous devriez vraiment corriger le code HTML et tout JS qui utilise ces divs, car il est HTML techniquement illégal qui peut provoquer un nombre quelconque de comportements imprévisibles

+0

Je sais, mais j'ai besoin des tests en premier. –