Phantomjs没有关闭进程
本文关键字:进程 Phantomjs | 更新日期: 2023-09-27 18:18:14
我试图在C#
中测试PhantomJS
(v 2.0)的一些事情,并且没有正确关闭它,这导致我的机器使用100%的CPU。
所有的程序工作正常,除了关闭它的部分。
i tried with
driver.Dispose();
driver.Quit();
driver.Close();
和(所有的)
Enviroment.Exit(-1);
Enviroment.Exit(0);
Enviroment.Exit(1);
return;
但进程仍在任务管理器
我试图残酷地关闭控制台
Process.GetCurrentProcess().Kill();
但仍不工作
有一个消息,幻影显示给我在控制台
[INFO - 2015-10-19T09:43:58.542Z] GhostDriver - Main - running on port 62810
[INFO - 2015-10-19T09:44:17.480Z] Session [f7138220-7645-11e5-b667-c72dd4c4644c
] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true
,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"loc
alToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Windows NT 6.1; WOW6
4) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.0.0 Safari/538.1","webSecur
ityEnabled":true}
[INFO - 2015-10-19T09:44:17.499Z] Session [f7138220-7645-11e5-b667-c72dd4c4644c
] - page.customHeaders: - {}
[INFO - 2015-10-19T09:44:17.507Z] Session [f7138220-7645-11e5-b667-c72dd4c4644c
] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"2.0.0
","driverName":"ghostdriver","driverVersion":"1.2.0","platform":"windows-7-32bit
","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databas
eEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"
browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":f
alse,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"prox
yType":"direct"}}
[INFO - 2015-10-19T09:44:17.530Z] SessionManagerReqHand - _postNewSessionComman
d - New Session Created: f7138220-7645-11e5-b667-c72dd4c4644c
[INFO - 2015-10-19T09:45:27.620Z] ShutdownReqHand - _handle - About to shutdown
另外,我正在使用硒,但我不认为有一个重要的信息。
任何想法?
谢谢。
我是如何使用Selenium WebDriver和PhantomJS来解决这个问题的
var service = PhantomJSDriverService.CreateDefaultService();
try
{
driver = new PhantomJSDriver(service);
driver.Navigate().GoToUrl("http://www.google.com");
}
catch (Exception ex)
{
service.Dispose();
}
finally
{
service.Dispose();
}
可能的解决方案
我不打算将它标记为有效,因为它是暂时的,但现在,解决这个问题的最简单/最快的方法是获得进程并手动杀死它。
为什么不是最好的解决方案,因为要杀死所有的PhantomJS进程,在我的情况下只有一个,然后是有效的,但比锁服务器要好。
foreach (Process proc in Process.GetProcessesByName("PhantomJS"))
{
proc.Kill();
}
如果有人知道如何获得一个特定的过程(如果有多个),将是受欢迎的。
在这种情况下,这样做似乎效果很好:
//Close Driver
driver.Close();
// Get the current process.
System.Diagnostics.Process myProcess = System.Diagnostics.Process.GetCurrentProcess();
// Close process by sending a close message to its main window.
myProcess.CloseMainWindow();
// Free resources associated with process.
myProcess.Close();
Environment.Exit(0);