我在應用程序中使用Selenium WebDriver,並且我有殺死webdrivers和瀏覽器實例的代碼。但是,我在想,如果用戶在運行應用程序之前打開了任何IE瀏覽器,則該代碼不僅會殺死我的應用程序產生的IE進程,還會殺死用戶在運行應用程序之前打開的IE實例。如何僅殺死由我的應用程序啓動的進程
有沒有一種方法可以跟蹤由我的應用程序啓動的進程,以便我可以過濾此方法以僅殺死由我的應用程序產生的IE進程,或者確定IE驅動程序和瀏覽器實例是由我的應用程序產生的,或者兩者兼而有之?
public void KillAllBrowsersAndWebDrivers()
{
var webDrivers = Process.GetProcessesByName("IEDriverServer").Select(p => p.Id);
var browsers = Process.GetProcessesByName("iexplore").Select(p => p.Id);
var processIds = webDrivers.Concat(browsers);
// do some stuff with PID, if you want to kill them, do the following
foreach (var pid in processIds)
{
try
{
Process.GetProcessById(pid).Kill();
Logger.Log(Loglevel.Debug, "Kill Process:{0}", pid);
}
catch (Exception)
{
Logger.Log(Loglevel.Error, "Error killing process: {0}", pid);
}
}
}
「哦,不!我的SO頁面關閉掉了什麼!」 - 只是爲了記住這個不推薦,因爲它會殺死你的應用程序運行後開始的任何進程。這是好的,如果這是一臺專用機器。 – rcdmk 2014-12-11 18:04:32