如何在Capybara has_css / have_selector中使用Regex表达式?

时间:2015-04-21 09:53:34

标签: ruby regex capybara nokogiri

在Rspec Capybara测试中,我想检查是否存在 H4 H5 ,..., H9 选择器。

我希望以下解决方案:

visit "/"
expect(page).not_to have_css(/(h|H)\[4-9]d/)

但由于Nokogiri解析而失败

我也注意到了:

has_css?("h1")

# is not equal to

has_css?("H1")

1 个答案:

答案 0 :(得分:1)

一些替代方案:

1。只需创建一个稍微丑陋的期望并完成它:

visit "/"
expect(page).not_to have_css("h1,H1,h2,H2,h3,H3,h4,H4,h5,H5,h6,H6,h7,H7,h8,H8,h9,H9")

我使用以下代码片段来生成那个丑陋的选择器:

(1..9).map { |n| "h#{n.to_s},H#{n.to_s}" }.join(',')

2。创建不区分大小写的XPath选择器:

How can I create a nokogiri case insensitive Xpath selector?

3。使用Nokogumbo

Nokogumbo是一个HTML5解析器,它创建小写元素名称。