c# 从内存中释放Selenium chromedriver.exe
背景
我设置了一个c#代码来运行Seleniumchromedriver.exe.在运行结束时,我有browser.close()来关闭实例。(browser=webdriver.Chrome())我相信它应该从内存中释放chromedriver.exe(我在Windows7上)。但是每次运行后,内存中仍有一个chromedriver.exe实例。
问题窥探
从理论上讲,调用browser.Quit将关闭所有浏览器选项卡并终止进程。
但是,在我的情况下,我无法做到这一点-因为我并行运行多个测试,我不想进行一次测试来关闭其他人的窗口。因此,当我的测试完成运行时,仍有许多“chromedriver.exe”进程在运行。
解决办法
publicoverridevoidDoJob(IJobExecutionContextcontext,ILifetimeScopescope,string[]args)
{
Console.WriteLine(nameof(LoginReptiles1688Job)+"开始-------------------");
ChromeOptionsoptions=null;
IWebDriverdriver=null;
try
{
options=newChromeOptions();
options.AddArguments("--ignore-certificate-errors");
options.AddArguments("--ignore-ssl-errors");
varlistCookie=CookieHelp.GetCookie();
if(listCookie!=null)
{
//options.AddArgument("headless");
}
ChromeDriverServiceservice=ChromeDriverService.CreateDefaultService(System.Environment.CurrentDirectory);
service.HideCommandPromptWindow=true;
driver=newChromeDriver(service,options,TimeSpan.FromSeconds(120));
varsetLoginStatus=scope.Resolve();
IReptilesImageSearchService_reptilesImageSearchService=scope.Resolve();
CrawlingWeb(_reptilesImageSearchService,driver);
CrawlingWebShop(_reptilesImageSearchService,driver);
}
catch(Exceptionex)
{
throwex;
}
finally
{
driver?.Close();//Closethechromewindow
driver?.Quit();//Closetheconsoleappthatwasusedtokickoffthechromewindow
driver?.Dispose();//Closethechromedriver.exe
driver=null;
options=null;
detailtry=0;
shoptry=0;
Console.WriteLine(nameof(LoginReptiles1688Job)+"结束-------------------");
}
}  
在C#控制台应用程序中使用了chrome驱动程序,只有在将所有三种方法一起调用后才能清理延迟进程。
以上就是c#从内存中释放Seleniumchromedriver.exe的详细内容,更多关于c#内存中释放Selenium的资料请关注毛票票其它相关文章!