Мой вопрос очень похож на этот вопрос . Я запускаю много экземпляров WebDriver
, и некоторые из них не отвечают на driver.quit()
. Как описано в этом ответе Я могу уничтожить экземпляр браузера, получив PID напрямую из объекта возможностей с помощью следующего кода:
Кодовый блок:
import java.io.IOException;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
public class Kill_Firefox_PID {
public static void main(String[] args) throws IOException {
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
System.out.println("moz:processID value is : "+cap.getCapability("moz:processID"));
Runtime.getRuntime().exec("taskkill /PID "+cap.getCapability("moz:processID"));
}
}
Вывод на консоль:
moz:processID value is : 8492
Хотя это отлично работает для уничтожения самого браузера, я все еще вижу примеры Geckodriver
когда я открываю диспетчер задач. Как указано в другом потоке, я не могу без разбора уничтожить все Geckdriver
экземпляры через taskkill /f /im geckodriver.exe
, поскольку есть некоторые необходимые экземпляры.
Короче говоря, я хочу иметь возможность получить PID Geckodriver
через возможности и уничтожить эти экземпляры Geckodriver
(через PID) аналогичным образом, что мы можем получить PID Firefox WebDriver
, как указано в ответ на этот вопрос .
Возможно ли это?
Спасибо!