专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

c# 从内存中释放Selenium chromedriver.exe

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:45:06       共计:3597 浏览
这篇文章主要介绍了c# 从内存中释放Selenium chromedriver.exe的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下

背景

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

问题窥探

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

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

解决办法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 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驱动程序,只有在将所有三种方法一起调用后才能清理延迟进程。

以上就是c# 从内存中释放Selenium chromedriver.exe的详细内容,更多关于c# 内存中释放Selenium 的资料请关注脚本之家其它相关文章!

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:.net C# 程序控制IIS 添加站点域名绑定 | ·下一条:C#实现将PDF文档转换为图片(O2S.Components.PDFRender4NET.Dll)

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有