Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Gerar um Jar utilizando Selenium

Boa tarde Pessoal, Estou tentando gerar um executável do meu Script em java, esse sistema utiliza o Selenium para realizar um procedimento automático, mas quando eu gero esse .jar e executo ele, nada acontece. Só aparece a janela que eu criei com JOptionPane e mais nada acontece, o que seria esse problema?

11 respostas

Oi Luiz,

Precisamos ver sua classe principal(classe com método main) desse projeto para entender como foi feito. Pode postar aqui o código dela?

Olá Rodrigo, vou postar aqui, mas não usei nada de Junit, apenas a biblioteca Selenium.

package metalumens;

import java.io.IOException;
import javax.swing.JOptionPane;

public class PrincipalMeta {

    public static void main(String[] args) {

        int opcao = 0;
        boolean erro = false;

        do {
            try {
                opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Atualizar Frete Leroy Merlin\n"
                        + "2 - Criar Planilha de Frete + Comissão da B2W"));
                if(opcao == 1 || opcao == 2) {
                    erro = false;
                    break;
                }
            } catch (Exception e) {
                System.out.println("Digite o Valor Correto:");
                erro = true;
            }
        }while(erro);



        switch(opcao) {

        case 1:
            RoboCorreios correios = new RoboCorreios();
            correios.loginLeroy();
            correios.loginBling();
            correios.paginaPedidosLeroy();        
            break;
        case 2:
            RoboB2W robo = new RoboB2W();
            robo.loginB2W();    
            robo.paginaCustoFrete();
            break;
        case 3:
            Planilha planilha = new Planilha();
            try {
                planilha.plan();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }                
    }

}

Quando eu crio um executavel(jar), ele chega a aparecer o JOptionPane, mas quando digito algo, nada acontece.

Olá Rodrigo, Conseguiu alguma resposta, por favor

Oi Luiz,

Pois é, não vi nenhuma problema a princípio.

Como sugestão você pode colocar também um JOptionPane dentro dos blocos catch para verificar se está acontecendo algum problema.

Algo como:

} catch (Exception e) {
    JOptionPane.showMessageDialog(null, e.getMessage());
}

Olá Rodrigo, tudo bem? Valeu pela dica, mas ainda não deu certo..hehe...Continuo quebrando a cabeça para tentar resolver isso....

Rodrigo tudo bem?

Eu executei esse .jar pelo cmd e o seguinte erro esta aparecendo: Engraçado é que no eclipse roda perfeitamente.

C:\Users\Luiz Henrique\OneDrive\Área de Trabalho\Robozinho>java -jar Funciona.jar Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61) Caused by: java.lang.IllegalStateException: The driver executable must exist: C:\Users\Luiz Henrique\OneDrive\Área de Trabalho\Robozinho\drivers\chromedriver.exe at org.openqa.selenium.internal.Require$FileStateChecker.isFile(Require.java:315) at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:144) at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:139) at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:38) at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:231) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:434) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:127) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:46) at metalumens.Rastreamento.(Rastreamento.java:20) at metalumens.PrincipalMeta.main(PrincipalMeta.java:40) ... 5 more

solução!

Oi Luiz,

Copia o arquivo chromedriver.exe para dentro do projeto, pode ser na pasta src/main/resources, e na sua classe que chama o selenium atualize o caminho do arquivo:

System.setProperty("webdriver.chrome.driver", "webdriver.exe");
WebDriver driver = new ChromeDriver();
...

Coloquei,

Agora esta aparecendo outro erro menor:

Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver at metalumens.PrincipalMeta.main(PrincipalMeta.java:40) Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 1 more

Nossa professor, consegui resolver..kkkkkk Estava dando esse erro aqui:

Exception in thread "main" java.lang.IllegalStateException: The driver executable must exist: C:\Users\Luiz Henrique\OneDrive\Área de Trabalho\Robozinho\src\main\resources\chromedriver.exe

Acredita que quando gerava o .jar na pasta Robozinho eu tive que criar outra pasta src\main\resources e colocar o chromedriver.exe, mas criei essa pasta fora do eclipse mesmo.

Só não entendi o porque disso, já que no meu projeto tem essa pasta criada e o chromedriver.exe nela.

Muito obrigado Professor, me ajudou muito de verdade...Vou dormir até feliz...kkkkk