ruby-on-rails - 使用水豚单击复选框
问题描述
目前我有一个由标签包裹的复选框。
<label for="exercise_form_division_ids_34">
<input class="check_boxes optional division-checkboxes" type="checkbox" value="34" name="form[division_ids][]" id="exercise_form_division_ids_34"> Technology
</label>
在我的集成测试中,我尝试使用
within '.organizations' do
find("label[for='exercise_form_division_ids_34").click
end
OR
check "exercise_form_division_ids_#{department.id}", allow_label_click: true
但是我仍然可以找到未禁用的可见复选框“calltree_exercise_form_division_ids_2”
Unable to find visible checkbox "exercise_form_division_ids_" that is not disabled
解决方案
由于提供的信息有限,您有一些潜在的可能性。
标签/复选框实际上不在
organizations
页面上具有 class 的元素内。该错误
Unable to find visible checkbox "exercise_form_division_ids_" that is not disabled
表明实际上没有 id 被插入到您的选择器中,这往往表明它department
实际上并未保留在您的测试中。您可能会
34
根据您的开发环境中的内容假设是正确的 id,但这可能不是您的测试环境中的内容。
要缩小可能性,首先要做的是在测试中抓取屏幕截图page.save_and_open_screenshot
(假设您使用的是支持屏幕截图的驱动程序)并确保页面上实际上有一个可见的复选框。如果没有,您可能没有在测试开始之前在数据库中创建所需的对象。
其次查看浏览器中的页面,确保屏幕上可见的元素实际上是复选框和/或标签。如果标签和复选框都被隐藏并替换为一些 JS 小部件,那么您需要与小部件在页面中创建的任何元素进行交互(就像用户一样)。如果仅通过 JS/CSS 隐藏了复选框,但标签可见,则
check('Technology', allow_label_click: true) # check matching on label text
应该管用。