【问题标题】:Checking checkboxes with Capybara使用 Capybara 检查复选框
【发布时间】:2012-07-18 20:03:37
【问题描述】:

使用 Capybara,我终生无法选择表单上的复选框。

在我尝试过的请求规范中:

check("First Name")
page.check("First Name")
page.check("pickem_option_ids_10")
find(:css, "#pickem_option_ids_11[value='11']").set(true)
find(:css, "#pickem_option_ids_11").set(true)

我的表单片段:

<div class="control-group check_boxes optional">
   <label class="check_boxes optional control-label">Options:</label>
   <div class="controls">
    <label class="checkbox">
     <input class="check_boxes optional" id="pickem_option_ids_10" name="pickem[option_ids][]" type="checkbox" value="10" />First Name
    </label>
    <label class="checkbox">
     <input class="check_boxes optional" id="pickem_option_ids_11" name="pickem[option_ids][]" type="checkbox" value="11" />Middle Name
    </label>
   </div>
</div>

我从this SO thread 那里得到了一些 find() 的想法。

我在其他规范中取得了一些成功,其中我有一个带有 Active 标签的复选框,我只是说 check("Active")

【问题讨论】:

标签: ruby-on-rails rspec capybara


【解决方案1】:

今天遇到同样的问题,我环顾四周,这似乎有效:

find(:xpath, "//input[@value='10']").set(true)

当然,您可以将“10”替换为您想要的任何内容 - 只需检查您的 HTML 并使用您的值。

希望对您有所帮助。

【讨论】:

  • 一个方便的提示是使用 Chrome Web Inspector 找到您的元素并右键单击并选择“复制 XPath”
【解决方案2】:

Capybara 找不到复选框 "First Name",因为您的 html 错误。你的 html 应该是这样的

<label class="checkbox" for="pickem_option_ids_10">First Name</label>
 <input class="check_boxes optional" id="pickem_option_ids_10" name="pickem[option_ids][]" type="checkbox" value="10" />

在你的代码中

= label_tag "pickem_option_ids_10", "First Name"
= check_box_tag "pickem_option_ids_10", 10

然后check("First Name") 应该可以工作。

否则你可以find("#pickem_option_ids_10").check

【讨论】:

  • 好点。我正在使用来自 simple_form 的关联助手,这是该标记的来源。不幸的是,我不知道如何实现您的建议。但是既然你提到它,生成的标记有点奇怪。
  • 抱歉,从未使用过 simple_form。 find("#pickem_option_ids_10").check 有效吗?
  • 失败/错误:find("#pickem_option_ids_10").check Capybara::ElementNotFound: Unable to find css "#pickem_option_ids_10"
  • 好吧,你可能还有其他页面。可以是 Rails 错误页面。
  • 我放入了一个 save_and_open_page,当它打开时,复选框甚至都不可见。这肯定是个问题。
猜你喜欢
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多