由于XPath支持自定义函数,因此我创建了一个自定义函数,以便可以匹配不区分大小写:
class XpathFunctions
def case_insensitive_equals node_set, str_to_match
node_set.find_all do |node|
node.to_s.downcase == str_to_match.to_s.downcase
end
end
end
然而,使用此页面进行测试会返回以下结果:
agent = Mechanize.new
page = agent.get('http://www.angelettiauto.it/parcoveicoli.php').parser
page.xpath("//*[case_insensitive_equals(text(),'Audi')]", XpathFunctions.new).count
# => 1
预期结果为4
,因为页面上列出了4个Audis,我需要全部。
这是因为使用完全匹配而非contains()
造成的,但我无法确定将其注入的位置。
答案 0 :(得分:0)
这可以通过修改case_insensitive_equals方法来实现,如下所示:
def case_insensitive_equals node_set, str_to_match
node_set.find_all do |node|
node.to_s.downcase.include?(str_to_match.downcase)
end
end