Capybara/Poltergeist,点击隐藏的复选框?
Capybara/Poltergeist, clicking on Hidden Checkbox?
我有一些 HTML 用于我正在尝试单击的复选框:
<td class="surface center">
<div class="checkbox-inline checkbox-inline--empty">
<input type="hidden" value="0" name="stuff_check">
<input id="stuff_1" class="boolean optional" type="checkbox" name="stuff_1_checked" value="1" data-item="5">
<label class="optional" for="stuff_1">Checked</label>
</div>
</td>
当 运行 一个 page.find_by_id('id').trigger('click')
它确实有效,只是使用 click
但是它抱怨 Poltergeist 可能点击另一个元素:
Capybara::Poltergeist::MouseEventFailed:
Firing a click at co-ordinates [-9468.5, 6] failed. Poltergeist detected another element with CSS selector '' at this position. It may
be overlapping the element you are trying to interact with. If you
don't care about overlapping elements, try using
node.trigger('click').
不过我觉得这可能是因为它被设置为 "hidden",所以我尝试 page.find_by_id('ID', :visible => false).click
但是它给出了同样的问题。
有什么建议吗?因为我知道使用触发器。('click') 不建议使用。
尝试
within('.checkbox-inline checkbox-inline--empty') do
check('#stuff_1')
end
我真的建议使用 Pry 来执行此操作,因为您可以省去查找元素所在位置的大量痛苦。
无法正确点击隐藏元素,因为用户无法点击未出现在屏幕上的元素。
您的示例令人困惑,因为隐藏元素没有与复选框元素相同的 name
属性,而这正是我通常在这种设置中所期望的。假设您真正想要做的是选中 "stuff_1" 复选框(并且通过 CSS 隐藏),那么您应该做您的应用程序用户必须做的事情 - 单击标签。
page.find('label[for="stuff1"]').click
我有一些 HTML 用于我正在尝试单击的复选框:
<td class="surface center">
<div class="checkbox-inline checkbox-inline--empty">
<input type="hidden" value="0" name="stuff_check">
<input id="stuff_1" class="boolean optional" type="checkbox" name="stuff_1_checked" value="1" data-item="5">
<label class="optional" for="stuff_1">Checked</label>
</div>
</td>
当 运行 一个 page.find_by_id('id').trigger('click')
它确实有效,只是使用 click
但是它抱怨 Poltergeist 可能点击另一个元素:
Capybara::Poltergeist::MouseEventFailed: Firing a click at co-ordinates [-9468.5, 6] failed. Poltergeist detected another element with CSS selector '' at this position. It may be overlapping the element you are trying to interact with. If you don't care about overlapping elements, try using node.trigger('click').
不过我觉得这可能是因为它被设置为 "hidden",所以我尝试 page.find_by_id('ID', :visible => false).click
但是它给出了同样的问题。
有什么建议吗?因为我知道使用触发器。('click') 不建议使用。
尝试
within('.checkbox-inline checkbox-inline--empty') do
check('#stuff_1')
end
我真的建议使用 Pry 来执行此操作,因为您可以省去查找元素所在位置的大量痛苦。
无法正确点击隐藏元素,因为用户无法点击未出现在屏幕上的元素。
您的示例令人困惑,因为隐藏元素没有与复选框元素相同的 name
属性,而这正是我通常在这种设置中所期望的。假设您真正想要做的是选中 "stuff_1" 复选框(并且通过 CSS 隐藏),那么您应该做您的应用程序用户必须做的事情 - 单击标签。
page.find('label[for="stuff1"]').click