使 Poltergeist 不区分大小写

Make Poltergeist case insensitive

我正在使用 Poltergeist / Capybara 进行测试:

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {
      timeout: 60,
      phantomjs_options: ['--load-images=no'],
      case_insensitive: true # <-- doesn't work
    })
  end
end

但我注意到我必须重写很多测试,因为 Poltergeists 驱动程序似乎是 case-sensitive。有什么我可以通过改变这个吗?

比较字符串时可以使用正则表达式

expect(page.body).to match(%r{#{string}}i)

来源:Case insensitive Rspec match

capybara 中的所有搜索都区分大小写,没有全局选项可以更改它。如果您需要进行不区分大小写的匹配,则必须逐个搜索进行。

正如@eugen 提到的,capybara 中的所有搜索默认情况下都区分大小写。您提到的必须重写测试的问题通常发生在从 does/does-not 支持 css 文本转换的驱动程序移动到 does-not/does 的驱动程序时 - 因此匹配的文本有或没有应用了 css 文本转换 (uppercase/lowercase/capitalize/...)。如果您希望能够在驱动程序之间来回切换并且确实需要不区分大小写,您可以将正则表达式传递给不同的匹配器

expect(page).to have_text(/case insensitive text/i)
expect(page).to have_selector(:css, '#div1', text: /case insensitive text/i)