capybara找到显示页面链接无法找到路径

时间:2016-01-31 01:05:25

标签: ruby-on-rails-4 cucumber capybara bdd

我试图测试是否存在图像链接,这是一个rails显示页面。

<a href="/entries/1"></a>

我尝试了很少的水豚但是没有工作。我知道id存在。

步骤代码

find_link('/entries/#{@photo_upload_entry.id}').visible?

find_link('/entries/1').visible?

expect(page).to have_link("/entries/#{@photo_upload_entry.id}")

expect(page).to have_link("/entries/1")

黄瓜测试错误

Unable to find link "/entries/\#{@photo_upload_entry.id" (Capybara::ElementNotFound)

Unable to find link "/entries/1" (Capybara::ElementNotFound)

expected to find link "/entries/1" but there were no matches (RSpec::Expectations::ExpectationNotMetError)

expected to find link "/entries/1" but there were no matches (RSpec::Expectations::ExpectationNotMetError)

1 个答案:

答案 0 :(得分:1)

从水豚文档 - http://www.rubydoc.info/gems/capybara/Capybara/Node/Finders#find_link-instance_method - 可以通过其ID或文本找到链接(它实际上也可以通过title属性或包含图像的alt属性找到 - 所以显然文档需要更新) 。如果您还想匹配href,它可以作为选项传入。你在问题中提到它是一个“图像链接”但你的例子中没有显示img元素。如果那里有一个图像元素并且它有一个alt属性(根据html规范的必需属性)你可以匹配,所以以下任何一个将找到/确定元素的存在

find_link('alt of contained img')  # will only find if visible so visible? not really needed
find_link('alt of contained img', href: '/entries/1')
expect(page).to have_link('alt value', href: '/entries/1')

如果您引用的图像是通过CSS或类似的图标应用的图标,则可以为定位器传递空字符串,并将href选项作为要匹配的对象传递。类似于以下内容取决于您是想要引用链接还是只是断言它的存在

find_link('', href: '/entries/1')
expect(page).to have_link('', href: '/entries/1')