发布:2021/2/24 16:29:23作者:管理员 来源:本站 浏览次数:985
我设置了一个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 的资料请关注脚本之家其它相关文章!
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4