Ruby 点击黄瓜中使用水豚的图像

Ruby 点击黄瓜中使用水豚的图像,ruby,ruby-on-rails-3,cucumber,capybara,Ruby,Ruby On Rails 3,Cucumber,Capybara,我试图点击一个带有水豚的图像进行黄瓜测试,但找不到一种方法让水豚将图像作为链接查看 我的图像代码是: link_to(image_tag('ico_edit_16.png', alt: 'Edit', class: 'icon16', title: "Edit #{qualification.title}"), edit_qualification_path(qualification)) 显示为 <a href="/qualifications/1/edit"> <

我试图点击一个带有水豚的图像进行黄瓜测试,但找不到一种方法让水豚将图像作为链接查看

我的图像代码是:

link_to(image_tag('ico_edit_16.png', alt: 'Edit', class: 'icon16', title: "Edit #{qualification.title}"), edit_qualification_path(qualification))
显示为

<a href="/qualifications/1/edit">
    <img class="icon16" title="Title" src="/images/ico_edit_16.png?1279303992" alt="Edit">
</a>

在html中,我一直无法找到一个好的方法来使用水豚点击图像

有什么建议吗?

这应该可以:

find('img.icon16').click
或者,根据alt文本进行查找:

find("img[alt='Edit']").click
还要注意的是,在Rails(我的例子是3.1.1)中,对于没有给定:alt值的图像,默认alt由image_标记帮助器设置:

:alt-如果未提供alt文本,则使用源文件的文件名部分(大写且不带扩展名)

例如,对于图像文件“kitten.jpg”,您可以使用
find(“img[@alt='kitten'])。单击
(注意大小写和删除扩展名)


使用此rails约定,您可以在cucumber/capybara中搜索任意图像链接

当图像无法识别时,我遇到了一个问题,因为页面中隐藏了多个具有相同id的元素。请尝试使用类似的方法

with_scope("#modal_window") do
  find("#close").click

这一步为我解决了问题。您必须使用XPath来匹配元素,然后找到其父元素。但需要注意的是,这可能不会同步:

当/^我跟随包含(?:| an | a | the |)“([^\”])”图像(?:| in“([^\”])”)的链接时$/


是的,如果你用的是我在haml的例子:

%div{id: "23", class: 'operations'}
  %a.delete{ href: '#', class: 'smallbtn'}
    %img{ src: 'assets/delete.png', alt: 'Delete'}

 %a.edit{ href: "#", class: 'smallbtn'}
   %img{ src: 'assets/edit.png', alt: 'Editar Producto'}
您不想使用id来单击链接,您使用的是图像,例如,在我的例子中,要单击删除链接,您需要声明一个类,稍后您可以使用下一个代码来单击元素,并另外确认模式操作:

  within '#23' do
    find('.delete').click
    page.driver.browser.switch_to.alert.accept
  end

代码似乎没有单击与图像相关联的链接——它可能会单击图像本身,但不会将链接带到任何地方。最后,我将一个ID传递到图像后面的链接中,然后使用click_link作为该ID名称,这很有效。您使用的是什么驱动程序?它应该在Selenium中工作,但无头驱动程序可能不够聪明,无法将单击传播到父链接。请删除“@”(使其成为有效的css选择器)…除了每个图像都应该具有有意义的alt文本之外,因此您不必这样做。
  within '#23' do
    find('.delete').click
    page.driver.browser.switch_to.alert.accept
  end