Selenium с Java все еще позволяет phatom в процессе драйвера (gecko et c.) Я делаю этот код, но это хороший способ сделать? - PullRequest
0 голосов
/ 29 мая 2020

Я получил часть этого с веб-сайта (жирный или **), мне нужно получить ссылку, извините. Этот метод пытается выполнить работу до тех пор, пока Selenium и java «действительно» не уничтожат процесс geckodriver в этом случае:

    import org.apache.commons.exec.OS;

    /**
     * <b>Méthode pour nettoyer les process du driver du navigateur
     *    qui resteraient actifs après la fin des tests</b>
     */
    private static void detruireTousLesPilotages() {
        String os = System.getProperty("os.name");
        String navigateurCourant = ((RemoteWebDriver) driver).getCapabilities().getBrowserName().toLowerCase();
        affiche.info("L'os est : " + os);// like println with formatting message and record in Logs file on myway
        affiche.info("Le navigateur est : " + navigateurCourant);
        if (OS.isFamilyWindows()) {
            switch (navigateurCourant) {
            case "firefox":
                try {
                    affiche.info("Destruction du pilote Gecko");
                    String tasklist = "tasklist"; //**
                    Process proc = Runtime.getRuntime().exec(tasklist); //**
                    BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream())); //**
                    OutputStreamWriter oStream = new OutputStreamWriter(proc.getOutputStream()); //**
                    oStream.write("process where name='geckodriver.exe'");//**
                    oStream.flush(); //**
                    oStream.close(); //**
                    while ((input.readLine()) != null) { //**
                        Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe /T"); //**
                    } //**
                    input.close();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
                break;

            case "chrome":
                affiche.info("Destruction du pilote Chrome");
                // TODO : code a faire pour chrome
                break;

            case "edge":
                affiche.info("Destruction du pilote Edge");
                // TODO : code a faire pour Edge
                break;

            default:
                affiche.erreur("Ce navigateur n'est pas géré dans cette version");
            }
        }
        if (OS.isFamilyUnix()) {
            // TODO : code pour Linux
        }
        if (OS.isFamilyMac()) {
            // TODO : code pour MacOS
        }
        // TODO : code pour d'autres OS
    }

В любом случае, если вы можете завершить работу с linux и MAcO или другими веб-драйверами, спасибо для читателей. (Простите за такой плохой английский sh).

...