Capybara Regex与Find

时间:2017-12-15 10:11:40

标签: ruby cucumber capybara

我正在尝试在过渡期间为正在开发的应用编写一些通用的东西。标题元素在h2和h3之间不断变化,并导致不必要的失败。我想要一些更具体的东西(页面).to have_text ...

我想要做的是在Capybara中编写一个find命令,它会在代码中为数字放置一个正则表达式。像这样:

def locate_headers(arg)
  header = find(/h(\d+)/, text: arg)
 end

我希望这会在屏幕上找到与文本匹配的H元素。

我收到以下错误:

Selenium::WebDriver::Error::InvalidSelectorError: invalid selector: An invalid or illegal selector was specified

我对Regex没有太多经验。我想做什么,可能吗?

由于

2 个答案:

答案 0 :(得分:3)

CSS选择器不支持正则表达式匹配,但它们支持与CSS逗号的OR匹配。这意味着你可以得到你想要的东西

def locate_header(arg)
  header = find('h2, h3', text: arg)
end

会找到包含给定文字的<h2><h3>元素

答案 1 :(得分:0)

find CSS选择器作为参数,而不是RegEx。因此,“非法选择者”。

考虑到这一点,:header选择器仅选择标题。但是,我不确定它是否与Capaybara link

兼容