2012-08-16 4 views
0

Utiliser RSpec et Capybara pour tester l'existence d'un élément dans une div avec la classe 'foo'.Comment choisir parmi plusieurs sélecteurs CSS avec Capybara

<div class="foo"> 
    <p>Text zzz</p> 
    Looking for element here 
</div> 
<div class="foo"> 
    <p>Text aaa</p> 
    Element should not exist within this div. 
</div> 

Il y a beaucoup de divs avec classe foo 'sur la page, et je peux leur donner différents ID de base sur l'ID de foo dans la base de données. Mais je ne connais pas l'ID de foo depuis le test. Et, je ne veux pas tester le parent des divs car un élément devrait être présent dans un div et absent dans un autre.

Quelle est la meilleure façon de tester un élément dans ce cas?

+0

De la façon dont vous avez formulerait la question, il n'y a aucun moyen de déterminer dans quel élément le contenu doit être. Vous dites que vous n'avez pas l'identifiant de foo dans l'environnement de test, mais qu'est-ce que vous avez? –

+0

Mis à jour avec plus d'informations. –

Répondre

2

Si je comprends bien la question (et je ne suis pas sûr à 100% que je ne), je pense que cela devrait fonctionner:

el1 = find(:xpath, '//div[@class="foo"][./p[contains(.,"Text zzz")]]') 
el2 = find(:xpath, '//div[@class="foo"][./p[contains(.,"Text aaa")]]') 

Il y a probablement une façon un peu plus simple de le faire en utilisant css au lieu de XPath , mais j'ai trouvé que cela fonctionne pour ce genre de situation. (Note: Je ne l'ai pas fait testé ce code.)

Questions connexes