[RUBY+capybara] - Utilizando o comando window_opened_by e within_window

Topic created · 12 Posts · 72 Visualizações
  • Pessoa, estou com a seguinte código:

    janelaq = window_opened_by do
           find("#psqs_questao").click    
     end     
          #comando para mudar o foco para a janela aberta    
    within_window janelaq do       
        find("#marcaTodos").click  
        first(".btn").click     
        janela.close   
      end
    

    Mas o que acontece é que ele abre duas vezes a janela e na segunda vez não marca o que eu preciso: find("#marcaTodos").click first(".btn").click

    Saberiam me informar para isso não acontecer?Pq abre duas vezes?

  • Alguém mais?rs

  • Hm… que estranho… seu código parece ok… qual versão do capybara que vc está usando? isso é executandi localmente ou através de um saucelabs da vida ?

    find("#psqs_questao").click abre 2 janelas?

    ou ele abre outra janela quando roda o segundo bloco de código?

  • @Leonardo-Galani obg por responder
    Então, abre a jabela, no meu caso seleciona todas as questões e marca as selecionadas find("#marcaTodos").click
    first(".btn").click nem precisaria fechar a janela.
    Depois o processo se repete, tipo abre a janela de novo find("#marcaTodos").click
    first(".btn").click mas ai nao roda o bloco within_window janelaq do

  • @Leonardo-Galani abre uma vez, realizada tudo e abre de novo e não seleciona

  • Olha… não faz muito sentido o mesmo código estar sendo executado 2 vezes… a não ser que ele esteja em algum hook… vc pode copiar e colar a spec inteira pra gente entender melhor? (claro… alterando dados sensiveis a sua aplicação.)

  • Talvez quando você chame within_window janelaq do onde janelaq pode tá executando de novo find("#psqs_questao").click

  • @Rafael-Ferreira-0 se tiver acotecendo isso é um bug… por isso perguntei a versão que ela ta usando.

  • Após o abrir a janela tenta passar o foco pra janela, antes de usar o within ou pode usar junto.

    switch_to_window(janelaq)
    ou
    within_window switch_to_window(janelaq)

    se não der certo, não é muito aconselhado, mas funciona:
    within_window (windows.last)

  • Pessoal , desculpem a demora pra responder, eu tenho muitas atividades …
    Mas ainda náo consegui resolver

    Estou usando capybara 3.31.0
    Utilizando essa segunda opção
    within_window switch_to_window(janelaq)
    meu script náo roda
    Seria interessante reportar o bug do capybara ??

  • @Leonardo-Galani , quando vc diz “me manda a spec inteira”
    seria esse bloco de cód?

    class CadProva < Base
      def cadastrar()
        first(".btn").click
        find("#identificacao").set("Simulado 3")
        select "Avaliação Nacional", from: "tipo_prova"
        select "Ensino Fundamental I", from: "escola_segmento"
        select "1° Ano", from: "serie"
        click_button "Próximo"
    
        #variavel que recebe a janela aberta
        janelaq = window_opened_by do
          find("#psqs_questao").click
        end
        #comando para mudar o foco para a janela aberta
        within_window janelaq do
          find("#marcaTodos").click
          first(".btn").click
          #janela.close
        end
    
        sleep(10)
    
        #segunda opçao
        #find("#psqs_questao").click
        #switch_to_window windows.last
        #find("#marcaTodos").click
        #first(".btn").click
        #windows.last.close
    
        click_button "Próximo"
        select "Não", from: "idioma_optativo"
        select "Tradicional", from: "tipo_ficha"
        find("#save").click
      end
    end
    
  • @mindwoman Eu acho que não, sem logs, precisa fazer um debug, olhei a função no código interno, se ele não encontrar a tela daria erro, assim como ter duas telas, sem evidencias eles vão fechar de cara. Coloca no github no privado o projeto e me add: reinaldorossetti
    O erro deve estar na segunda função within_window.