Я использую Rspec и Capybara.
Как я могу написать шаг для проверки 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">
Ответы:
Я обнаружил, что у меня работает следующее:
источник
find(:css, "#cityID[value='62']").set(true)
будет работать, ноfind(:css, "#cityID[][value='62']").set(true)
не будет найден и завершится ошибкой. Как запустить ту же функцию с идентификатором пустой скобки?find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
Лучше не создавать несколько элементов с одним и тем же идентификатором , чтобы (и не только для этого) вы могли легко установить / снять флажок с элегантным
Если нельзя избежать нескольких элементов с одним и тем же идентификатором и все же нужно установить флажок с определенным значением , он может сделать это с помощью
Более подробная информации о Капибаре входных манипуляциях можно найти здесь
источник
При запуске теста капибары вы получили
page
объект. Это вы можете использовать для установки / снятия флажков. Как уже упоминал @buruzaemon:Итак, предположим, что у вас есть флажок в вашем html, например:
Вы можете проверить это с помощью:
Снимите флажок - это тот же
page.uncheck
метод использования .источник
check
метод реализован в Capybara.def check(locator, options={}) find(:checkbox, locator, options).set(true) end
Я думаю, вам, возможно, придется в первую очередь дать уникальные
id
s своим элементам формы .Но что касается Capybara и флажков, метод экземпляра Capybara :: Node :: Actions # check позволит вам найти и установить флажок по имени, идентификатору или тексту метки.
источник
Если поле связано с текстом, например, "Вариант 3", то
capybara 3.0.3
вы можете просто сделатьисточник
Я знаю, что это более старый вопрос, но я сам работал над этим, и, попробовав все вышеперечисленное, это то, что наконец сработало для меня:
Надеюсь, это кому-то поможет. Я использую Capybara 2.4.4.
источник
Старая тема, но другое решение:
check('Option 3', allow_label_click: true)
источник
вы также можете использовать: xpath вместо: css, если у вас возникли проблемы с его поиском.
в Chrome (и, конечно, в других браузерах) вы можете «проверить элемент», а затем, щелкнув правой кнопкой мыши по интересующему вас элементу, есть «копировать xpath», если вы не знаете, что такое xpath, теперь вы это делаете.
источник
Вы также можете проверить, что все флажки не отмечены в этом примере.
все ('input [type = checkbox]'). each do | checkbox | checkbox.should_not be_checked end
источник
.set (true) у меня не сработал, поэтому мне пришлось вызвать .click:
find(...).click
источник
click
сама по себе является действительной командой capybara (или, по крайней мере, если это так, ее, похоже, нет в документации), и (2) если бы это было так, она, вероятно, переключила бы флажок, не убедитесь, что он былВозникли проблемы с настраиваемым флажком, который скрыт за элементом метки. Нужен был
allow_label_click: true
.Что касается этого сообщения в блоге ,
источник
Я думаю, это заставит капибару ждать любого прослушивателя событий, прикрепленного к этому входу, что иногда становится головной болью, если он не ждет ... Если у этого входа нет идентификатора, выберите другое свойство (должен быть один) ...
источник
установить флажок
источник