Capybara - 检查链接上是否存在数据属性

时间:2013-12-28 22:16:04

标签: ruby-on-rails rspec ruby-on-rails-4 capybara

我的页面上有一个特定属性的链接。使用Rspec + Capybara如何检查此链接是否存在?

<a href="#" id="text" data-content="This is a discrete bar chart.">Foo</a>

不起作用:

page.find(:css, 'a[data-content="This is a discrete bar chart."]')

使用:

page.find(:css, 'a#test')

4 个答案:

答案 0 :(得分:12)

我有相同的查询,但引号不同。

find("a[data-method='delete']").click

对我有用。

答案 1 :(得分:1)

这可能是Capybara发现太多结果的问题。也许改变&#39;发现&#39;到所有&#39;并查看是否获得了可以从中选择的结果数组。祝你好运。

答案 2 :(得分:0)

在搜索链接的title属性(工具提示)时,这对我有用:

Then(/^I should see tooltip "(.*?)" on link "(.*?)"$/) do |tip, link|
  within('#results') do
    link = find(:link, link)
    expect(link['title']).to eql(tip)
  end
end

注意:within是可选的,可用于减少歧义的可能性。

HTML源代码:

<a title="Owner: lfco Fire Department" href="/water_supplies/597df82566e76cfcae000018">Hydrant LFCO One</a>

答案 3 :(得分:0)

以下是一些不同的方式:

expect(page).to have_selector("a[href='#'][data-content='This is a discrete bar chart.']")

page.has_selector?("a[href='#'][data-content='This is a discrete bar chart.']")

page.find("a[href='#'][data-content='This is a discrete bar chart.']")  # returns the node found

如果您无权访问页面但有权访问呈现的内容,那么

expect(Capybara.string(rendered)).to have_selector("a[href='#'][data-content='This is a discrete bar chart.']")