Итак, я делаю BDD с Cucumber и имею форму с флажками, заполненными из базы данных. Ярлыки для флажков содержат гиперссылки. До сих пор не слишком экзотическое (обратите внимание, что это HAML и не Эрб, но он должен быть доступен для чтения достаточно для любого человека Rails):Поиск метки с Webrat, которая содержит ссылку
I would like my donation to support:
%br
- for podcast in @podcasts
= check_box_tag "donation[podcast_ids][]", podcast.id, true
= donation.label "donation[podcast_ids][]", link_to(podcast.name, podcast.url), :value => podcast.id
%br
Проблема в том, что в моих особенностях огурца, я не могу понять как найти, что checkbox, чтобы проверить его. Соответствующая часть этой истории заключается в следующем:
Scenario: Happy path
Given I am on the home page
When I fill in "My email address" with "[email protected]"
# Skipped for brevity...
And I check the "Escape Pod" podcast
And I check the "PodCastle" podcast
And I press "I'm ready!"
Then I should see "Thank you!"
And there should be 2 podcast donation records
Если я использую голый webrat_steps.rb файл я получаю следующую ошибку:
Could not find field: "Escape Pod" (Webrat::NotFoundError)
Я совершенно уверен, что это из-за что метод link_to()
, который я использую, чтобы сделать «Escape Pod» гиперссылкой на фактический веб-сайт. Но я не могу легко получить доступ к link_to
с моего шага огурца, и я не могу определить любой разумный способ указывать Webrat на флажке справа, чтобы не допустить целую кучу гиперссылок на моем шаге (что делает его очень хрупкий).
My BDD застопорился на этом этапе. Я не хочу вынимать ссылку только потому, что ее трудно проверить. И это похоже на то, что не должно быть трудно тестировать. Webrat просто ограничивает то, что я могу передать в метод checks()
. Может ли кто-нибудь предложить элегантный ответ для этого?
Спасибо John - Я знал о локаторах 'field \ _by \ _', но мог передавать их как параметр был ключом, которого я отсутствовал. Теперь они имеют гораздо больше смысла, и я ценю понимание. К сожалению, предложенный XPath не работает, поскольку он указывает на метку, а не на флажок. Попытка совместить его с полем \ _labeled \ _' не работала. Я мог бы написать запрос XPath, чтобы найти элемент только _before_ ярлыка, но затем я понял гиперссылки, так как вся этикетка - это плохая идея, так как вы не можете щелкнуть по метке, чтобы установить флажок. Поэтому переосмысление всей идеи. Еще ... спасибо! – SFEley