Я получил часть этого с веб-сайта (жирный или **), мне нужно получить ссылку, извините. Этот метод пытается выполнить работу до тех пор, пока 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).