Capybara,click在rspec上下文中没有任何作用,但在命令行promt上工作,为什么?

时间:2013-01-15 13:57:48

标签: html ruby-on-rails testing rspec capybara

我的配置:

https://gist.github.com/4547098

html如下:

<td>
  <img id="listActorsResultsForm:actorList:1:viewActionImage" 
     src="/TM/img/icons64/kfind.gif" height="28" 
     onclick="A4J.AJAX.Submit('listActorsResultsForm',event,
     {'similarityGroupingId':'listActorsResultsForm:actorList:1:j_id709','parameters':
     {'listActorsResultsForm:actorList:1:j_id709':'listActorsResultsForm:actorList:1:j_id709'} 
     } )" style="cursor: pointer;" title="Voir" width="28">
</td>

我的图片有一个链接到onclick事件的ajax.submit。 我想做的是点击带有水豚的图像,但我的所有尝试都失败了。

我尝试了什么:

  find('listActorsResultsForm:actorList:1:viewActionImage').click
  find_by_id('listActorsResultsForm:actorList:1:viewActionImage').click
  page.find(:xpath,'//*[@id="listActorsResultsForm:actorList:1:viewActionImage"]').click

我找不到点击图片的好方法,以便执行ajax.submit。

有一种奇怪的行为

当我这样做时:

  page.find(:xpath,'//*[@id="listActorsResultsForm:actorList:1:viewActionImage"]').click
  click_on 'listActorsResultsForm:actorList:1:viewActionImage'

我想看的页面出现了,但是有一个错误:

Failure/Error: click_on 'listActorsResultsForm:actorList:1:viewActionImage'
 Capybara::ElementNotFound:
   Unable to find link or button "listActorsResultsForm:actorList:1:viewActionImage"
 # ./spec/aipo_spec.rb:20:in `block (3 levels) in <top (required)>'

但是在命令行上下文中(参见gist for setup)它可以正常工作

Capybara.find(:xpath,"//img[@alt='viewActor119']").click

找到链接,点击操作打开网页

有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

根据Capybara docs,“click_on”专门查找具有该ID的链接或按钮,而您只是拥有该ID的图片。当您从命令中运行它时,您正在搜索具有正确ID的图像。

我的Ajax不是很好,所以如果我错了,请纠正我,但是你不能用带有正确ID的标签包装那个图像吗?