Cucumber/Webrat: следовать ссылке по классу CSS?

Можно ли использовать ссылку по имени класса вместо идентификатора, текста или заголовка? Учитывая, что у меня (ха-ха, инсудер огурца он?) Следующий html-код:

<div id="some_information_container">
  <a href="edit" class="edit_button">Translation here</a>
</div>
  • Я не хочу сопоставлять текст, потому что мне придется заботиться о значениях перевода в моих тестах
  • Я хочу, чтобы мои кнопки выглядели одинаково, поэтому я буду использовать класс CSS.
  • Я не хочу назначать идентификатор каждой отдельной ссылке, потому что некоторые из них отлично идентифицируются через контейнер и класс ссылок

Есть ли что-нибудь, что я пропустил в Огурце/Ветрате? Или у вас есть несколько советов, чтобы решить это лучше?

Спасибо за вашу помощь и наилучшие пожелания,

Джо

edit: Я нашел интересную дискуссию по этой теме. здесь - кажется, остается открытым вопрос на данный момент. У вас есть другие решения для этого?

Ответы

Ответ 1

Вот как я сделал это с огурцом, надеюсь, что это поможет. # В определении шага помогает CSS понять, что происходит.

Это работает только с именами идентификаторов, а не с именами

Определение шага

Then /^(?:|I )should see ([^\"]*) within a div with id "([^\"]*)"$/ do |text, selector|
  # checks for text within a specified div id
  within "##{selector}" do |content|  
    if defined?(Spec::Rails::Matchers)
      content.should contain(text)
    else
      hc = Webrat::Matchers::HasContent.new(text)
      assert hc.matches?(content), hc.failure_message
    end  
  end     
end

Функция

Scenario Outline: Create Project
  When I fill in name with <title>
      And I select <data_type> from data_type
      And I press "Create"
  Then I should see <title> within a div with id "specifications"

Scenarios: Search Terms and Results
   | data_type  | title        |
   | Books      | A Book Title |

Ответ 2

Вот как утверждать текст внутри элемента с именем класса "edit_botton"

Then I should see "Translation here" within "[@class='edit_button']"

Ответ 3

Как насчет find('a.some-class').click?

Ответ 4

Я не очень хорошо знаком с API WebRat, но как насчет использования DOM-поиска для получения ссылочного идентификатора класса, который вы ищете, затем передает его функции click_link?

Здесь ссылка на некоторый javascript для извлечения элемента по классу. http://mykenta.blogspot.com/2007/10/getelementbyclass-revisited.html

Теперь, когда я думаю об этом, как насчет использования Javascript просто изменить его на случайный идентификатор, а затем щелкнуть его?

В любом случае, это должно работать до тех пор, пока скромное обсуждение имени не включит функцию getbyclass, как разрешено.

Ответ 5

Работает ли has_tag для вас?

have_tag ( 'a.edit_button')