我在应用程序中使用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