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')