Estou usando Rspec e Capivara.
Como posso escrever uma etapa para verificar a checkbox
? Eu tentei check
pelo valor, mas ele não pode encontrar o meu checkbox
. Não tenho certeza do que fazer, pois na verdade tenho o mesmo ID com valores diferentes
Aqui está o código:
<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">
Respostas:
Eu encontrei o seguinte funcionou para mim:
fonte
find(:css, "#cityID[value='62']").set(true)
funcionará, masfind(:css, "#cityID[][value='62']").set(true)
não será encontrado e falhará. Como executo a mesma função com um ID de colchete vazio?find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
É melhor não criar vários elementos com o mesmo ID , para que (e não apenas para isso) você possa marcar / desmarcar facilmente uma caixa de seleção com
Se alguém não puder evitar vários elementos com o mesmo ID e ainda precisar marcar uma caixa de seleção com determinado valor , poderá fazê-lo com
Mais informações sobre manipulações de entrada de capivara podem ser encontradas aqui
fonte
Ao executar o teste da capivara, você obteve o
page
objeto. Isso pode ser usado para marcar / desmarcar todas as caixas de seleção. Como o @buruzaemon já mencionou:Então, vamos supor que você tenha uma caixa de seleção em seu html como:
Você pode verificar isso com:
Desmarcar é o mesmo
page.uncheck
método apenas usar .fonte
check
método é implementado na Capivara.def check(locator, options={}) find(:checkbox, locator, options).set(true) end
Eu acho que você pode precisar atribuir
id
s exclusivos aos seus elementos de formulário , antes de tudo.Mas com relação à Capivara e às caixas de seleção, o método da instância Capybara :: Node :: Actions # check permitirá que você encontre e marque uma caixa de seleção por nome, ID ou texto do rótulo.
fonte
Se a caixa estiver associada ao texto, por exemplo, 'Opção 3', então
capybara 3.0.3
você pode simplesmente fazerfonte
Sei que essa é uma pergunta mais antiga, mas eu mesma já resolvi isso e, depois de tentar todas as opções acima, foi isso que finalmente funcionou para mim:
Espero que isto seja útil para alguém. Estou usando a Capivara 2.4.4.
fonte
Um tópico antigo, mas outra solução é:
check('Option 3', allow_label_click: true)
fonte
você também pode usar: xpath em vez de: css se tiver algum problema para encontrá-lo.
no Chrome (e certamente em outros navegadores), você pode "inspecionar o elemento" e, em seguida, clicando com o botão direito do mouse no elemento de seu interesse, existe 'copy xpath' se você não sabe o que era xpath, agora sabe.
fonte
Você também pode verificar se todas as caixas de seleção não estão marcadas com este exemplo.
all ('input [type = checkbox]'). cada um faz | checkbox | checkbox.should_not be_checked end
fonte
.set (true) não funcionou para mim, então tive que ligar para .click:
find(...).click
fonte
click
seja um comando válido da capivara (ou pelo menos, se estiver, não parece estar nos documentos) e (2) se fosse, provavelmente alternaria a caixa de seleção, não se certificar de que estava ligado ou desligadoTive alguns problemas com a caixa de seleção personalizada, oculta por trás do elemento label. Necessário a
allow_label_click: true
.Com referência a esta postagem no blog ,
fonte
Eu acho que isso fará a capivara esperar por qualquer ouvinte de evento anexado a essa entrada, o que às vezes é um pé no saco se não esperar .... Se essa entrada não tiver um ID, escolha outra propriedade (deve haver um) ...
fonte
para marcar a caixa de seleção
fonte