使用RSpec& amp;点击图片水豚

时间:2011-12-01 08:24:13

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

我正在使用Rspec和Capybara。

我试图点击图片,但找不到让Capybara点击图片的方法。我不知道该怎么做,因为我实际上是同一类,alt和src。

由于

html的例子

<tr class="even">
  <td class="gridData" style="text-align:center;">
  <td class="gridData"> 221 </td>
  <td class="gridData" route="default" reset="0" urlparams="users index edit {userID}" label="Username">
  <td class="gridData">
  <img class="user-info-grid" alt="info" src="/themes/system/images/icon/16/information.png">
  </td>
</tr>

 <tr class="odd">
  <td class="gridData" style="text-align:center;">
  <td class="gridData"> 222 </td>
  <td class="gridData" route="default" reset="0" urlparams="users index edit {userID}" label="Username">
  <td class="gridData">
  <img class="user-info-grid" alt="info" src="/themes/system/images/icon/16/information.png">

事实上这里是我要测试的来源:

  <img class="user-info-grid" alt="info" src="/themes/system/images/icon/16/information.png">

但正如我所说,我找不到让Capybara点击图片的方法。

有什么想法吗?

6 个答案:

答案 0 :(得分:12)

您可以使用:

page.first(".user-info-grid").click

这用于查找 user-info-grid 类并应用点击功能。

如果有多个类带有此名称,则单击将在第一个找到的类中执行。

答案 1 :(得分:9)

您可以在寻找ID时使用它:

find("#the_id").click

或者是一个班级

find(".the_class").click

答案 2 :(得分:0)

那是因为你的图像是图像,而不是链接。首先将其包裹在链接中,然后单击链接,如下所示:

<a href="..." id="my_link"><img ... /></a>

答案 3 :(得分:0)

我是否正确理解没有<a>元素,因为您使用的是JavaScript onclick处理程序?如果是这样,那么你需要知道普通的Capybara不会做JavaScript。您需要使用capybara-webkit,Selenium或其他类似的东西。

但我建议你放入<a>元素,并将JS处理程序应用于此。这将使没有JavaScript的用户代理更容易处理(是的,还有一些!)。

马蒂亚斯是对的:让你的HTML有效。

答案 4 :(得分:0)

尝试使用XPath,如果没有,那么您可以使用visit_to链接源,或者您可以使用http://railscasts.com/episodes/257-request-specs-and-capybara上的试用帮助

答案 5 :(得分:0)

我把它放在工作中:

  find("img[src*='myphoto.jpg']").click