Tengo los siguientes dos elementos en HTML
<a href="/berlin" >Berlin</a>
<a href="/berlin" >Berlin Germany </a>
Estoy tratando de encontrar el elemento usando el siguiente método de Capybara
find("a", :text => "berlin")
Arriba se devolverán dos elementos porque ambos contienen texto berlin.
¿Hay alguna forma de hacer coincidir el texto exacto en Capybara?

Respuestas:
Solo usa la opción exacta de Capybara :
fuente
Use una expresión regular en lugar de una cadena para el valor de la
:textclave:Consulte la sección 'Opciones hash' de la
Method: Capybara::Node::Finders#alldocumentación .PD: las coincidencias de texto distinguen entre mayúsculas y minúsculas. Su código de ejemplo en realidad genera un error:
fuente
click_link(link_text, :text => link_text)Dependiendo de la versión de la gema que estés usando
puede estar en desuso. En cuyo caso tendrías que usar
fuente
Mi preferencia es usar
have_selectorcontextyexact_text: true:fuente
Tú también puedes hacerlo:
Eso encontrará para CSS.
Y usar solo en
exact: truelugar deexact_textle mostrará un mensaje de que laexactopción solo es válida para XPATH.fuente
find("a", exact_text: "berlin")Para usar click_link en carpincho, debe agregar una propiedad más en el método que lo usa.
Aquí, link_name es el valor de texto de un enlace. Usando : palabra clave de texto , estamos especificando que queremos hacer clic en un enlace que tiene el valor de texto que coincide exactamente con nuestro requisito.
fuente