Как установить флажок в капибаре?


Я использую Rspec и капибара.

как я могу написать шаг, чтобы проверить checkbox? Я пробовал check по значению, но не могу найти checkbox. Я не уверен, что делать, так как у меня на самом деле один и тот же идентификатор с разными значениями

вот код:

 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID">
9 109

9 ответов:

Я обнаружил, что для меня работает следующее:

# Check
find(:css, "#cityID[value='62']").set(true)

# Uncheck
find(:css, "#cityID[value='62']").set(false)

лучше не создавать несколько элементов с одним и тем же id, так что (и не только для этого) вы можете легко проверить/снять флажок флажок элегантных

check 'cityID'
uncheck 'cityID'

Если нельзя избежать нескольких элементов с одинаковым идентификатором и все еще нужно установить флажок С определенным значением, он может сделать это с

find(:css, "#cityID[value='62']").set(true)
find(:css, "#cityID[value='62']").set(false)

подробнее о капибара входные манипуляции можно найти здесь

при запуске теста капибара, вы получили

Я думаю, что вы, возможно, придется дать уникальный id s к вашим элементам формы в первую очередь.

но что касается капибары и флажков, то Capybara:: Node:: Actions#check instance method позволит вам найти и проверить флажок по имени, идентификатору или тексту метки.

Я знаю, что это более старый вопрос, но я сам работал над этим, и, попробовав все вышеперечисленное, это то, что, наконец, сработало для меня:

find("input[type='checkbox'][value='#{cityID.id}']").set(true)

надеюсь, что это полезно для кого-то. Я использую капибара 2.4.4.

вы также можете использовать :xpath вместо :css, если у вас есть некоторые проблемы с его поиском.

find (: xpath , '//*[@id="example"]').установить(истина)

в Chrome (и, конечно же, в других браузерах) вы можете "проверить элемент", а затем, щелкнув правой кнопкой мыши на интересующем вас элементе, есть "копировать xpath", если вы не знаете, что такое xpath, теперь вы это делаете.

вы также можете проверить, что все флажки не установлены в этом примере.

все ('input[type=checkbox]').каждый do / checkbox| флажок.should_not be_checked конец

.set (true) не работал для меня, поэтому мне пришлось позвонить .нажмите:

find(...).click

check find(".whenever input")[:id]

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