因此,我使用黄瓜进行BDD,并从数据库中填充了一个带有复选框的表单。复选框的标签包含超链接。到目前为止,还不太异国情调(请注意,这是HAML而不是Erb,但对于任何Rails人员来说,它都应该足够可读性):
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问题是,在我的Cucumber特性中,我不知道如何找到复选框来检查它。故事的相关部分如下:
Scenario: Happy path
Given I am on the home page
When I fill in "My email address" with "john@example.org"
# 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()方法,我用它来使“逃逸Pod”成为到实际网站的超链接。但是,我无法从Cucumber步骤轻松地访问link_to,也无法找到任何合理的方法将Webrat指向右边的复选框,除非在我的步骤中使用大量超链接代码(这使得它非常脆弱)。
我的BDD在这一点上停滞不前了。我不想仅仅因为很难测试就把链接取出来。感觉应该不难测试。Webrat只是限制了我可以传递给checks()方法的内容。有人能对此提出一个优雅的答案吗?
发布于 2009-09-25 00:43:00
简单的回答是使用field_by_xpath或其他Webrat::Locator方法来选择要在步骤中操作的元素:
When(/^I check the "(.+?)" podcast$/) do |name|
check(field_by_xpath("//label/a[.=#{name}]")
end您可能需要稍微使用这个xpath,或者使用field_by_id。记住,它正在查找,得到标记的html id,而不是数据库中的id。
发布于 2010-08-08 17:32:14
您能在出现问题的复选框(Es)附近的呈现页面中张贴HTML外观吗?有时你得玩命名场地..。我在登录表单上遇到了各种各样的麻烦.最后我做了这个:
<%= submit_tag 'Enter', {:id => "login_button"} %>因此,下列措施发挥了作用:
Given /^I am logged in as admin$/ do
visit login_path
fill_in "login", :with => "admin"
fill_in "password", :with => "password"
# click_button "login_button"
click_button
end我知道这不是一个复选框的例子,但也许修改你的名字/id/etc会有效
https://stackoverflow.com/questions/1474045
复制相似问题