如何通过匹配在水豚的元素的确切文本find一个元素

我有以下两个HTML元素

<a href="/berlin" >Berlin</a> <a href="/berlin" >Berlin Germany </a> 

我试图通过使用以下水豚方法find元素

 find("a", :text => "berlin") 

以上将返回两个元素,因为两者都包含文本柏林。

有没有一种方法来匹配水豚的确切文字?

使用正则expression式而不是string作为:text键的值:

 find("a", :text => /\ABerlin\z/) 

查看Method: Capybara::Node::Finders#all 文档的“选项哈希”部分。

PS:文本匹配区分大小写。 您的示例代码实际上引发了一个错误:

 find("a", :text => "berlin") # => Capybara::ElementNotFound: # Unable to find css "a" with text "berlin" 

取决于您使用的是哪个版本的gem

 find('a', text: 'Berlin', exact: true) 

可能会被弃用。 在这种情况下,你将不得不使用

 find('a', text: 'Berlin', match: :prefer_exact) 

只要使用水豚的确切选项 :

 Capybara.exact = true