2015-06-06 78 views
2

我正在创建PhantomJSDriver的几个实例,并可以向网站发出请求并获取我想要的数据。每一个实例通过催生了以下内容:PhantomJS过程不会退出

WebDriver driver = BrowserUtils.getInstance().getBrowser(); 

当我做我试图做到以下几点:

driver.close(); 
    driver.quit(); 
    driver = null; 

不过,如果我打开第二个终端,运行

[email protected]:~/logs$ ps -e | grep phantom 
4472 pts/2 00:00:41 phantomjs 
4524 pts/2 00:00:32 phantomjs 
4787 pts/2 00:00:18 phantomjs 
4808 pts/2 00:00:19 phantomjs 

他们只是坐在那里。他们永远不会离开。想法?

编辑1:增加了一些更多的代码澄清

WebDriver driver = BrowserUtils.getInstance().getBrowser(); 
     try { 
      driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.MINUTES); 
      driver.manage().timeouts().implicitlyWait(1, TimeUnit.MINUTES); 
      driver.get("https://my-web-site.com/"); 
      // Do lots of things 
      } catch (Exception e) { 
      logger.log(e); 
     } finally { 
      BrowserUtils.getInstance().reset(); 
      driver.close(); 
      driver.quit(); 
      driver = null; 
     } 
+0

理想情况下任何关闭或退出方法应该工作。你之前有过一些未公开的版本吗? – nEO

+0

可能的'driver.quit()'从未被调用,因为测试失败或类似的东西。不管测试发生了什么,你是否确定它被调用? – Saifur

+0

我在try/catch/finally里面有这个,所以无论发生什么事情都叫它。 –

回答

2

请检查您的退出,退出调用的代码,甚至on.error渔获。添加缺少的一个。

而且,如果是确定的,考虑下面的错误的情况下,https://github.com/ariya/phantomjs/issues/10845 你所拥有的NVIDIA视频适配器(我甚至在PhantomJS这个问题1.9.8) 如果你有NVIDIA,请升级驱动程序,或选择只您有两个视频适配器之一,而不是自动选择。

祝你好运

+0

我会继续寻找。但是,我知道这不是视频卡 –

+1

在查看我的日志之后再看一下。有一个Element not found超时错误没有被捕获并保持服务活着。现在我可以一次发射6个实例! –