首页 > 解决方案 > 使用水豚单击复选框

问题描述

目前我有一个由标签包裹的复选框。

<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

标签: ruby-on-railscapybara

解决方案


由于提供的信息有限,您有一些潜在的可能性。

  1. 标签/复选框实际上不在organizations页面上具有 class 的元素内。

  2. 该错误Unable to find visible checkbox "exercise_form_division_ids_" that is not disabled表明实际上没有 id 被插入到您的选择器中,这往往表明它department实际上并未保留在您的测试中。

  3. 您可能会34根据您的开发环境中的内容假设是正确的 id,但这可能不是您的测试环境中的内容。

要缩小可能性,首先要做的是在测试中抓取屏幕截图page.save_and_open_screenshot(假设您使用的是支持屏幕截图的驱动程序)并确保页面上实际上有一个可见的复选框。如果没有,您可能没有在测试开始之前在数据库中创建所需的对象。

其次查看浏览器中的页面,确保屏幕上可见的元素实际上是复选框和/或标签。如果标签和复选框都被隐藏并替换为一些 JS 小部件,那么您需要与小部件在页面中创建的任何元素进行交互(就像用户一样)。如果仅通过 JS/CSS 隐藏了复选框,但标签可见,则

check('Technology', allow_label_click: true) # check matching on label text

应该管用。


推荐阅读