Нажав флажок с использованием капибары - PullRequest
0 голосов
/ 08 мая 2018

В настоящее время у меня есть флажок, завернутый в ярлык.

<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

1 Ответ

0 голосов
/ 08 мая 2018

При наличии ограниченной информации у вас есть несколько потенциальных возможностей.

  1. Метка / флажок на самом деле не находятся внутри элемента с классом organizations на странице.

  2. Ошибка Unable to find visible checkbox "exercise_form_division_ids_" that is not disabled показывает, что на самом деле в ваш селектор не вставлен ни один идентификатор, что может указывать на то, что department на самом деле не сохраняется в вашем тесте.

  3. Возможно, вы предполагаете, что 34 - это правильный идентификатор, основанный на том, что он есть в вашей среде разработки, но это может быть не то, что в вашей тестовой среде.

Чтобы сузить возможности, первое, что нужно сделать, это сделать снимок экрана в вашем тесте с page.save_and_open_screenshot (при условии, что вы используете драйвер, который поддерживает скриншоты) и убедиться, что на самом деле есть видимый флажок стр. Если нет, то, вероятно, вы не создаете требуемые объекты в БД до начала теста.

Во-вторых, посмотрите на страницу в вашем браузере и убедитесь, что элементы, видимые на экране, на самом деле являются флажками и / или метками. Если оба ярлыка и флажок скрыты и заменены каким-либо виджетом JS, вам нужно будет взаимодействовать с любыми элементами, которые виджет создает на странице (как это сделал бы пользователь). Если через JS / CSS скрыт только флажок, но метка видна, то

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

должно работать.

...