目前我有一个由标签包装的复选框。
<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
答案 0 :(得分:1)
由于提供的信息有限,您可能会有一些潜在的可能性。
标签/复选框实际上并不在页面上具有organizations
类的元素内。
错误Unable to find visible checkbox "exercise_form_division_ids_" that is not disabled
表示实际上没有ID插入到您的选择器中,这往往表明department
实际上并未存在于您的测试中。
您可能认为34
是基于您的开发环境中的内容的正确ID,但可能与您的测试环境中的内容不同。
要缩小可能性,首先要做的是使用page.save_and_open_screenshot
在您的测试中获取屏幕截图(假设您正在使用支持屏幕截图的驱动程序)并确保实际存在页面上的可见复选框。如果没有,您可能不会在测试开始之前在DB中创建所需的对象。
然后查看浏览器中的页面,确保屏幕上显示的元素实际上是复选框和/或标签。如果标签和&amp;复选框被隐藏并替换为一些JS小部件,然后您需要与小部件在页面中创建的任何元素进行交互(就像用户一样)。如果只通过JS / CSS隐藏了复选框,但标签是可见的,那么
check('Technology', allow_label_click: true) # check matching on label text
应该有用。