2015-06-06 62 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個實例! –