我正在使用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点击图片的方法。
有什么想法吗?
答案 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