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

另外,我正在使用硒,但我不认为有一个重要的信息。

任何想法?

谢谢。

Phantomjs没有关闭进程

我是如何使用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);