程序地带

从内存中释放Selenium chromedriver.exe


背景

我设置了一个c#代码来运行Selenium chromedriver.exe.在运行结束时,我有browser.close()来关闭实例。(browser = webdriver.Chrome())我相信它应该从内存中释放chromedriver.exe(我在Windows 7上)。但是每次运行后,内存中仍有一个chromedriver.exe实例。


问题窥探

从理论上讲,调用browser.Quit将关闭所有浏览器选项卡并终止进程。


但是,在我的情况下,我无法做到这一点 - 因为我并行运行多个测试,我不想进行一次测试来关闭其他人的窗口。因此,当我的测试完成运行时,仍有许多“chromedriver.exe”进程在运行。


解决办法
public override void DoJob(IJobExecutionContext context, ILifetimeScope scope, string[] args)
{
Console.WriteLine(nameof(LoginReptiles1688Job) + " 开始-------------------");
ChromeOptions options = null;
IWebDriver driver = null;
try
{
options = new ChromeOptions();
options.AddArguments("--ignore-certificate-errors");
options.AddArguments("--ignore-ssl-errors");
var listCookie = CookieHelp.GetCookie();
if (listCookie != null)
{
// options.AddArgument("headless");
}
ChromeDriverService service = ChromeDriverService.CreateDefaultService(System.Environment.CurrentDirectory);
service.HideCommandPromptWindow = true;
driver = new ChromeDriver(service, options, TimeSpan.FromSeconds(120));
var setLoginStatus = scope.Resolve<ISetLoginStatus>();
IReptilesImageSearchService _reptilesImageSearchService = scope.Resolve<IReptilesImageSearchService>();
CrawlingWeb(_reptilesImageSearchService, driver);
CrawlingWebShop(_reptilesImageSearchService, driver);
}
catch (Exception ex)
{
throw ex;
}
finally
{
driver?.Close(); // Close the chrome window
driver?.Quit(); // Close the console app that was used to kick off the chrome window
driver?.Dispose(); // Close the chromedriver.exe
driver = null;
options = null;
detailtry = 0;
shoptry = 0;
Console.WriteLine(nameof(LoginReptiles1688Job) + " 结束-------------------");
}
}

在C#控制台应用程序中使用了chrome驱动程序,只有在将所有三种方法一起调用后才能清理延迟进程。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lyl6796910/p/14260765.html

随机推荐

2020-12-11

2020-12-11

汤头条最新破解思路百度搜索:386资源网(教程是转别的地方的,我看不懂,蹲个大佬出成品)5.3.0版本加入了伪邦邦加固࿰...

qq_52010446 阅读(729)

将xml字符串的所有叶标签转换成Map集合

实际问题:对方服务器接口采用webservice方式返回xml报文,现需解析xml获取所有叶节点的标签名及携带的值解决方案:利用dom4j解析xml并利用递归...

氯雷他定. 阅读(583)

DoS、DDoS工具Cobalt Strike

CobaltStrike简介CobaltStrike是一款美国RedTeam开发的渗透测试神器,常被业界人称为CS。最近这个工具大火,成为了渗透测试中不可缺少的利器。其拥有...

Redmaple925 阅读(250)

音视频开发之旅(15) OpenGL ES粒子系统 - 喷泉

目录粒子和粒子系统实践:喷泉效果遇到的问题资料收获通过该篇的实践实现如下效果 一、什么是粒子和粒子系统如何定义粒子?一个粒子有位置信息(x,y,z࿰...

yangyabin2021 阅读(693)

1.3.4 Fork/Join框架

packagecom.study.forkjoin;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent....

氯雷他定. 阅读(790)

OpenGL vao aos soa

教程链接合理的组织数据结构,减少状态切换,可以提高渲染性能。AOS(ArrayOfStructure):把多个模型的数据,以结构体数组的形式,存...

奋起无痕 阅读(703)