Mam następujące dwa elementy w HTML
<a href="/berlin" >Berlin</a>
<a href="/berlin" >Berlin Germany </a>
Próbuję znaleźć element, używając metody Kapibary
find("a", :text => "berlin")
Powyższe zwróci dwa elementy, ponieważ oba zawierają tekst berlin.
Czy istnieje sposób na dopasowanie dokładnego tekstu w Kapibara?
Odpowiedzi:
Po prostu użyj dokładnej opcji Kapibary :
źródło
Użyj wyrażenia regularnego zamiast ciągu znaków jako wartości
:text
klucza:Zapoznaj się z sekcją „Hash opcji” w
Method: Capybara::Node::Finders#all
dokumentacji .PS: w dopasowaniach tekstowych rozróżniana jest wielkość liter. Twój przykładowy kod w rzeczywistości powoduje błąd:
źródło
click_link(link_text, :text => link_text)
W zależności od używanej wersji klejnotu
mogą być przestarzałe. W takim przypadku musisz użyć
źródło
Ty też możesz to zrobić:
To znajdzie dla CSS.
Użycie tylko
exact: true
zamiastexact_text
spowoduje wyświetlenie wiadomości, żeexact
opcja jest ważna tylko dla XPATH.źródło
find("a", exact_text: "berlin")
Preferuję używanie
have_selector
withtext
iexact_text: true
:źródło
Aby używać click_link w kapibara, musisz dodać jeszcze jedną właściwość w metodzie, która go używa.
Tutaj nazwa_linku to wartość tekstowa linku. Używając słowa kluczowego : text określamy, że chcemy kliknąć łącze o wartości tekstowej, która dokładnie odpowiada naszym wymaganiom.
źródło