Нажав на изображение, используя RSpec & Capybara - PullRequest
2 голосов
/ 01 декабря 2011

Я использую 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">

Но, как я уже сказал, я не могу найти способ заставить Капибару щелкнуть по изображению.

Есть идеи?

Ответы [ 6 ]

12 голосов
/ 04 декабря 2012

Вы можете использовать это:

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

Используется для поиска user-info-grid класса и применения функции щелчка.

Если с этим именем идет несколько классов, щелчок будет выполнен в первом найденном классе.

9 голосов
/ 11 августа 2012

Вы можете использовать это при поиске идентификатора:

find("#the_id").click

Или для класса

find(".the_class").click
0 голосов
/ 31 мая 2017

Я поставил это и работает:

  find("img[src*='myphoto.jpg']").click
0 голосов
/ 06 декабря 2011

Попробуйте использовать XPath, если нет, то вы можете использовать visit_to как источник ссылки или использовать help help на http://railscasts.com/episodes/257-request-specs-and-capybara

0 голосов
/ 01 декабря 2011

Правильно ли я понимаю, что нет элемента <a>, потому что вы используете обработчик JavaScript onclick? Если это так, то вам нужно знать, что обычная капибара не поддерживает JavaScript. Вам нужно использовать capybara-webkit , Selenium или что-то подобное.

Но я бы посоветовал вам вставить элемент <a> и применить к нему обработчик JS. Это облегчит работу с пользовательскими агентами без JavaScript (да, они еще есть!).

И Матиас прав: сделайте ваш HTML верным.

0 голосов
/ 01 декабря 2011

Это потому, что ваше изображение это изображение, а не ссылка. Сначала оберните его внутри ссылки, затем нажмите ссылку, например, так:

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