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

Я использую 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">
114 голосов | спросил John Dow 28 12011vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2011 18:52:03 +0400 2011, 18:52:03

10 ответов


0

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

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

# Uncheck
find(:css, "#cityID[value='62']").set(false)
ответил Jon M 28 12011vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2011 19:18:02 +0400 2011, 19:18:02
0

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

check 'cityID'
uncheck 'cityID'

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

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

Дополнительную информацию о капибаре можно найти в здесь

ответил installero 13 MarpmWed, 13 Mar 2013 16:22:39 +04002013-03-13T16:22:39+04:0004 2013, 16:22:39
0

При запуске теста на капибару вы получили объект page. Это вы можете использовать, чтобы установить /снять все флажки. Как уже упоминалось @buruzaemon:

  

чтобы найти и поставить галочку по имени, идентификатору или тексту метки.

Итак, давайте предположим, что в вашем html-файле есть флажок:

<label>  
  <input type="checkbox" value="myvalue" name="myname" id="myid">
  MyLabel
</label>

Вы можете проверить это с помощью:

page.check('myid')
page.check('MyLabel')
page.check('myname')

Снимите флажок, просто используйте метод page.uncheck.

ответил p1100i 11 FebruaryEurope/MoscowbMon, 11 Feb 2013 18:05:09 +0400000000pmMon, 11 Feb 2013 18:05:09 +040013 2013, 18:05:09
0

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

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

ответил buruzaemon 28 12011vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2011 19:09:45 +0400 2011, 19:09:45
0

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

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

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

ответил Michael Cruz 14 52014vEurope/Moscow11bEurope/MoscowFri, 14 Nov 2014 19:54:15 +0300 2014, 19:54:15
0

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

  

find (: xpath, '//* [@ id = "example"]'). set (true)

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

ответил kulssaka 16 52012vEurope/Moscow11bEurope/MoscowFri, 16 Nov 2012 13:40:19 +0400 2012, 13:40:19
0

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

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

ответил user3853159 15 Mayam15 2015, 11:04:03
0

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

find(...).click

ответил HectorPerez 11 32015vEurope/Moscow11bEurope/MoscowWed, 11 Nov 2015 14:58:39 +0300 2015, 14:58:39
0
check find(".whenever input")[:id]

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

ответил Willian Tenfen Wazilewski 13 Mayam17 2017, 00:09:36
0

Если поле связано с текстом, например, «Вариант 3», тогда с capybara 3.0.3 вы можете просто сделать

check 'Option 3'
ответил Obromios 23 52018vEurope/Moscow11bEurope/MoscowFri, 23 Nov 2018 02:03:13 +0300 2018, 02:03:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132