Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

java.lang.IllegalStateException: The driver executable does not exist: C:\Users\stepp\Desktop\curso-bdd\workspace\leilao\drivers\geckodriver.exe

Não faço a minima ideia do que aconteceu . Vou deixar o meu Github para a analise dos códigos. https://github.com/getulioramos/bdd-java-cucumber-alura

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

11 respostas

Olá Getúlio!

Pelo que pude entender, o erro que você está recebendo é que o driver do navegador não está sendo encontrado no caminho especificado. Isso pode estar acontecendo porque o caminho para o driver está incorreto ou porque o arquivo do driver não foi baixado corretamente.

Uma solução para esse problema seria verificar se o caminho está correto e se o arquivo do driver foi baixado corretamente. Você pode tentar baixar novamente o arquivo do driver e colocá-lo no caminho especificado.

Outra possibilidade seria verificar se a versão do driver é compatível com a versão do navegador que você está utilizando.

Espero ter ajudado e bons estudos!

Agradeço o seu feedback, mas eu não sei como eu faria essa atualização . Eu voltei a usar o browser virtual (htmlunit) ao invés do firefox.

Olá Getúlio, tudo bem?

Ali na linha 15 da classe BrowserFactory nós temos uma chamada para o getProperty pra pegar a variável de ambiente especificando qual o browser deve ser utilizado para os testes. Do jeito que a chamada tá escrita, se a variável de ambiente não for especificada ao rodar a aplicação, ele vai devolver "firefox" como resposta padrão e aí ele vai precisar que o driver do Gecko exista e esteja atualizado no caminho especificado. Caso você queria seguir utilizando o HTMLUnit, acredito que você possa alterar a linha 15 para:

String webdriver = System.getProperty("browser")

Desse modo, se não tiver a variável de ambiente browser ele vai devolver algo diferente de chrome e firefox e aí vai instanciar o HTMLUnitDriver ali no switch e em teoria tudo deve funcionar normalmente.

Faça o teste no seu código e caso não funcione avisa a gente aqui pra tentarmos ajudar, ok?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

fiz a troca, mas continua dando erro, até coloquei de outra maneira como na foto abaixo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Segue o projeto no github pára analise: https://github.com/getulioramos/bdd-java-cucumber-alura

Olá Getúlio, baixei aqui o seu projeto e consegui rodar normalmente sem fazer alterações no código, com exceção daquela alteração que você já fez para usar o HTMLUnit. Vou explicar por partes aqui o procedimento pra executar com sucesso o teste.

1. Rodando a aplicação

O primeiro ponto importante aqui é que antes de executar os testes a LeilaoApplication esteja sendo executada em ambiente de testes. Para isso você vai precisar configurar a variável de ambiente spring.profiles.active=test. Esse procedimento está descrito a partir do instante 8:08 do vídeo https://cursos.alura.com.br/course/bdd-cucumber-java/task/80079. Caso a aplicação não esteja rodando, o Selenium vai acusar o erro que você recebeu na imagem que você enviou por último. Perceba que ele diz que ele foi incapaz de achar o elemento chamado username (Unable to locate element with name: username) e isso acontece porque ele não encontrou a página disponível no endereço localhost:8080/login.

Uma vez que a aplicação de leilão está rodando, vale testar se está de pé mesmo abrindo um navegador e visitando localhost:8080. Se tudo estiver certo você vai ser redirecionado pra página de login.

2. Populando o banco de dados

O próximo passo é popular o banco de dados com os dados do usuário de teste. Para fazer isso, o instrutor do curso já disponibilizou uma url que faz esse cadastro inicial no banco. Para ativar isso você vai precisar visitar o endereço localhost:8080/db/seed. Esse procedimento também é descrito em detalhes a partir do instante 3:43 do vídeo https://cursos.alura.com.br/course/bdd-cucumber-java/task/80080. Se tudo der certo, você deve receber uma mensagem {'message', 'dados populadas'}. Caso esse passo não seja concluído, o teste de login vai falhar pois o usuário "fulano" com senha "pass" não será encontrado no banco e portanto faz sentido que o teste falhe.

3. Executando os testes

Uma vez que esses dois passos foram concluídos, você pode executar o LeilaoCucumberRunner e tudo deve funcionar e o teste deve passar.

Lembrando que o ambiente de teste está configurado para utilizar o banco H2 que é um banco em memória. Isso significa que toda vez que você for executar os testes, você precisa se certificar que o servidor da aplicação esteja rodando e que o banco foi repopulado.

Verifique se esse passo a passo te ajuda a solucionar o problema de execução dos testes e avisa a gente se der certo ou não, ok?

Eu fiz o que vc mencionou nos passos acima e quando digitei localhost:8080/db/seed ele ia direto pra página de login e não aparecia nenhuma informação, posteriormente quando rodei o teste apareceu outro erro.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá Getúlio!

Eu imagino que o banco não subiu e a causa pode ter sido o nome da variável de ambiente. Pra verificar o que acontece se rodar os testes sem o banco, consegui replicar exatamente o mesmo erro que você apresentou, olha só:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Para ter certeza que é esse mesmo o problema, execute novamente a LeilaoApplication e tente acessar a URL localhost:8080/h2-console. Se o banco estiver rodando você vai conseguir acessar a página de admin dele. Você deve ter essa tela como resultado:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Aí queria verificar como você fez a configuração da variável de ambiente no Eclipse. No vídeo o instrutor mostra duas formas. A primeira é adicionando a variável de ambiente diretamente na mão da seguinte forma:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade A segunda forma é utilizar diretamente a configuração do Spring Boot selecionando o perfil test nesta tela:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Não sei se você já experimentou as duas formas mas eu tentaria pra termos certeza que essa parte da variável de ambiente está ok. Depois de fazer os testes, caso não funcione, vou pedir pra você colar aqui aquele log que aparece quando você roda a LeilaoApplication. Quando tudo dá certo você deveria ter um log assim:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeSe surgir algo diferente o log deve ajudar a identificarmos o problema.

Eu já rodei o LeilaoApplication e cooquei a URL localhost:8080/h2-console, mas o link acaba sendo redirecionado pra pagina de login http://localhost:8080/login.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Ontem não havia aparecido essa parte do Spring Boot, somente a parte do Arguments

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Fechei o programa e refiz novamente os passos e desta vez deu tudo certo! Muito obrigado pela ajuda!!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Perfeito Getúlio, obrigado por informar!

Vou marcar aqui o tópico como solucionado mas se tiver mais alguma dúvida é só abrir outro tópico.