【发布时间】:2016-12-05 18:16:12
【问题描述】:
我在应用程序中使用 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);
}
}
}
【问题讨论】: