博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从内存中释放Selenium chromedriver.exe
阅读量:4033 次
发布时间:2019-05-24

本文共 2183 字,大约阅读时间需要 7 分钟。

背景

我设置了一个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
(); IReptilesImageSearchService _reptilesImageSearchService = scope.Resolve
(); 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驱动程序,只有在将所有三种方法一起调用后才能清理延迟进程。

转载地址:http://ybudi.baihongyu.com/

你可能感兴趣的文章
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex中设置Label标签文字的自动换行
查看>>
Flex 中的元数据标签
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-11. 数据类型之间的转换
查看>>
01Java基础语法-13. if分支语句的灵活使用
查看>>
01Java基础语法-15.for循环结构
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-17. do..while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>