Ich habe folgende zwei Elemente in HTML
<a href="/berlin" >Berlin</a>
<a href="/berlin" >Berlin Germany </a>
Ich versuche, das Element mithilfe der folgenden Capybara-Methode zu finden
find("a", :text => "berlin")
Oben werden zwei Elemente zurückgegeben, da beide Text berlin enthalten.
Gibt es eine Möglichkeit, exakten Text in Capybara abzugleichen?
Antworten:
Verwenden Sie einfach die genaue Option von Capybara :
quelle
Verwenden Sie für den Wert des
:text
Schlüssels einen regulären Ausdruck anstelle einer Zeichenfolge :Lesen Sie den Abschnitt 'Options Hash' in der
Method: Capybara::Node::Finders#all
Dokumentation .PS: Bei Textübereinstimmungen wird zwischen Groß- und Kleinschreibung unterschieden. Ihr Beispielcode löst tatsächlich einen Fehler aus:
quelle
click_link(link_text, :text => link_text)
Abhängig davon, welche Version des Edelsteins Sie verwenden
kann veraltet sein. In diesem Fall müssten Sie verwenden
quelle
Ich bevorzuge die Verwendung
have_selector
mittext
undexact_text: true
:quelle
Sie können dies auch tun:
Das wird für CSS finden.
Wenn Sie nur
exact: true
anstelle von verwenden,exact_text
wird eine Meldung angezeigt, dass dieseexact
Option nur für XPATH gültig ist.quelle
find("a", exact_text: "berlin")
Um click_link in capybara zu verwenden, müssen Sie der Methode, die es verwendet, eine weitere Eigenschaft hinzufügen.
Hier ist der Linkname der Textwert eines Links. Mit dem Schlüsselwort : text geben wir an, dass wir auf einen Link mit dem Textwert klicken möchten, der genau unserer Anforderung entspricht.
quelle