我的页面上有一个特定属性的链接。使用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')
答案 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.']")