Cucumber/Webrat: перейти по ссылке по классу CSS?

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

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

Есть ли что-то, что я пропустил в Cucumber/Webrat? Или у вас есть несколько советов, чтобы решить эту проблему лучше?

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

Джо

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


person xijo    schedule 20.10.2009    source источник
comment
Я добавил рубиновый тег, Брайан.   -  person Jared    schedule 22.05.2010


Ответы (5)


Вот как я сделал это с огурцом, надеюсь, это поможет. # в определении шага помогает 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 |
person yekta    schedule 19.02.2010

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

Then I should see "Translation here" within "[@class='edit_button']"
person jspooner    schedule 02.06.2010

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

person theunraveler    schedule 21.02.2012

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

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

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

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

person David    schedule 11.11.2009

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

have_tag('a.edit_button')

person Harry Love    schedule 24.11.2009