J'ai deux éléments suivants en HTML
<a href="/berlin" >Berlin</a>
<a href="/berlin" >Berlin Germany </a>
J'essaie de trouver l'élément en utilisant la méthode Capybara suivante
find("a", :text => "berlin")
Ci-dessus renverra deux éléments car les deux contiennent du texte berlin.
Existe-t-il un moyen de faire correspondre le texte exact à Capybara?
Réponses:
Utilisez simplement l'option exacte de Capybara :
la source
Utilisez une expression régulière au lieu d'une chaîne pour la valeur de la
:text
clé:Consultez la section «Options Hash» de la
Method: Capybara::Node::Finders#all
documentation .PS: les correspondances de texte sont sensibles à la casse. Votre exemple de code génère en fait une erreur:
la source
click_link(link_text, :text => link_text)
Selon la version de la gemme que vous utilisez
peut être obsolète. Dans ce cas, vous devrez utiliser
la source
Vous pouvez également le faire:
Cela trouvera pour CSS.
Et utiliser uniquement
exact: true
au lieu deexact_text
vous montrera un message indiquant que cetteexact
option n'est valable que pour XPATH.la source
find("a", exact_text: "berlin")
Ma préférence est d'utiliser le
have_selector
avectext
etexact_text: true
:la source
Pour utiliser click_link dans capybara, vous devez ajouter une propriété supplémentaire dans la méthode qui l'utilise.
Ici, le link_name est la valeur textuelle d'un lien. En utilisant : mot-clé text, nous spécifions que nous voulons cliquer sur un lien dont la valeur textuelle correspond exactement à notre exigence.
la source