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