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

How to use Regex expression in Capybara have_css/have_selector?

在 Rspec 水豚测试中我想检查没有 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。只需创建一个稍微丑陋的期望并完成它:

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 解析器,它创建小写元素名称。