Der :link
Selektor akzeptiert eine :href
Option, die eine Regex akzeptiert. Also, wenn Sie für ein einzelnes Ergebnis suchen, könnte Sie tun
page.find_link(nil, href: /regex to match against/)
in Capybara 2.7 die anfängliche nil Sie ist erforderlich, um anzuzeigen, werden die normalen Locator nicht verwenden, die übergeben werden würde find_link (Link-Text, usw.) , in Capybara 2.8, wenn es veröffentlicht wird, wird es nicht notwendig sein. Hinweis: Die Regex wird mit dem Knoten ['href'] abgeglichen, der in den meisten Treibern die Eigenschaft href (im Gegensatz zu attribute) ist und daher normalisiert wird, um die vollständige URL zu sein, auf die der Link verweist - obwohl das Attribut in der Dokument kann nur auf/abc/def gesetzt werden. Wenn Sie tatsächlich für mehr als ein Ergebnis suchen, dann können Sie
page.all(:link, nil, href: /regex to match against/)
tun, wenn stattdessen die Überprüfung Sie nur, dass eine bestimmte Anzahl von passenden Links (3) existieren würde es
expect(page).to have_link(nil, href: /regex to match/, count: 3)
sein, was Struktur tut 'page.find_link ('a') [: href]' zurück? Testen, dass etwas * einem regulären Ausdruck entspricht, ist nicht das, was Sie wollen. Offensichtlich wird dein Link kein regulärer Ausdruck sein. Sie möchten testen, ob es * passt *. – tadman