Criar element checkbox page ruby

Topic created · 6 Posts · 89 Visualizações
  • Gostaria de saber como criar um elemento na page, para chamar .click baseado na linha de código abaixo.

    <label class="switch n-m pull-right">
        <input type="checkbox" id="ckbVigencia" ng-model="novoTicket.checkVigencia" ng-change="limparVigencia(novoTicket.checkVigencia)" class="ng-untouched ng-valid ng-dirty ng-valid-parse ng-empty">
       <span class="slider round"></span>
    </label>
    
  • Olá!
    Não sei se entendi o que você queria, se for clicar no elemento do tipo checkbox, é possível usar o Capybara.

    Há vários jeitos de fazer isso, seguem abaixo alguns exemplos:

    check '#ckbVigencia'
    
    find('#ckbVigencia').click
    
    find(:css, '#ckbVigencia').click
    
    find(:css, '#ckbVigencia[value="<value>"]')
    
    
  • @Gabriiel-Miranda

    Opa!

    Pelo o que entendi, o que você quer é alguma coisa assim:

    1 - Modo mais simples para só uma opção:

        #usando o id como identificador
        element :checkbox, '#ckbVigencia'
    
        #metodo qualquer de exemplo
        def click_checkbox 
            checkbox.click
            
        end
    

    2 - Modo para poder selecionar mais opções

     #passar a quantidade de opções que podem ser selecionadas
        def number_random()
            number_random = Random.rand(10)
            return number_random.to_s
        end
    
        #usando o cssSelector
        element :checkbox, 'label > input:nth-child(' + number_random() + ')'
    
        #metodo qualquer de exemplo para selecionar 3 opções
        def click_checkbox 
            i = 1
            while i < =3
                checkbox.click
                i += 1
            end
        end
    

    Abraços

  • Tentei todas as opções que mandaram acima. Inclusive agradeço muito a todos. Porém acredito que seja alguma problema no código fonte. Vejamos,

    1 - Criei a feature com todo o roteiro e com os arquivos necessários sendo, a page com todos os elementos daquela página que o teste irá rodar.

    2 - Implementação do código ruby, quando criei a função para “#ckbVigencia” usando o elemento criado, ou até mesmo usando o elemento id"#ckbVigencia"
    me retorna o erro ( Unable to find visible css “#ckbVigencia” (Capybara::ElementNotFound) ) , tentei criar o elemento de todas as formas acima e não obtive sucesso.

    3 - Como dito acredito que seja um problema no código fonte, quando encontrar a solução posto aqui e caso alguém saiba alguma solução manda também que irei testando.

    Obs.: O tipo de checkbox não é o tradicional de marcação, mas aquele estilo botão ON/OFF .

  • @Gabriiel-Miranda

    Entendi.

    Seria melhor você colocar o seu código aqui, um print da tela aonde está o elemento.

    O Print da tela com o inspecionar com a busca do elemento feita, para confirmar que está busca está certa e o elemento é único.

    Talvez a busco do elemento está certa, porém possa ser um problema de time. O elemento ainda não está visível por isso não está localizando quando executa o teste.

    Ou um vídeo do testes rodando, que dai da para analisar melhor o que pode está acontecendo.

    Abraços

  • Eu tinha um problema parecido e isso acontecia porque o elemento em questão estava implementado em um <iframe>.
    Nesses casos é preciso especificar o contexto para que o Capybara consiga entender onde achar o elemento especificado.

    É possível informar um contexto usando a função within link.

    Há vários tipos específicos de implementação com within, para saber qual aplicar é preciso analisar o código, identificar onde o elemento está implementado e achar o elemento pai que será passado como parâmetro.

    Exemplo:

    within('#id-pai') do
       check '#ckbVigencia'
    end