2017-04-08 463 views
9

由於chromedriver在執行結束時未刪除名爲scoped_ *的文件夾,因此最新的chromedriver.exe運行時出現磁盤空間不足問題。 400次測試佔用了將近20GB的空間。我嘗試了2.28和2.29版本的chromedriver。我正在使用driver.close()和driver.Quit()正確退出驅動程序。 Chrome瀏覽器的版本是57Chromedriver在測試完成後未刪除臨時文件夾中的scoped * dir

回答

8

我加入臨時文件夾中刪除該戒菸司機像後「scoped_dir」開始管理本:

public static void teardown_() 
     { 
      // quit driver 
      if (driver != null) 
       driver.Quit(); 

      // delete all "scoped_dir" temp folders 
      string tempfolder = System.IO.Path.GetTempPath(); 
      string[] tempfiles = Directory.GetDirectories(tempfolder, "scoped_dir*", SearchOption.AllDirectories); 
      foreach (string tempfile in tempfiles) 
      { 
       try 
       { 
        System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(tempfolder); 
        foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true); 
       } 
       catch (Exception ex) 
       { 
        writeEx("File '" + tempfile + "' could not be deleted:\r\n" + 
          "Exception: " + ex.Message + "."); 
       } 
      } 
     } 

希望它能幫助!

+0

如果您收到 「無法刪除非空文件夾」,使用此實施:的foreach(在tempFolders串tempFolder) { 嘗試 { Directory.Delete(tempFolder,真); } 趕上(例外前){ ... } } 這 – Illidan

+2

戰略工程同步執行,但如果您使用的是平行** ** chromedriver工作,你會踩在運行'chromedriver.exe'過程並導致問題。 – SliverNinja

7

這是一個已知的錯誤將被固定Chromedriver 2.30 https://bugs.chromium.org/p/chromedriver/issues/detail?id=644

這似乎是ChromeDriver和鉻之間的競爭條件。 ChromeDriver創建這些臨時目錄供Chrome使用,最後ChromeDriver嘗試刪除這些目錄。 ChromeDriver在進行刪除之前等待主要Chrome進程終止,但一些Chrome子進程可能仍在運行並持有這些目錄,導致刪除失敗。目前ChromeDriver不會重試刪除操作。

像丹尼爾提到的刪除臨時文件可能是一個臨時解決方案,但我會盡快刪除它,一旦Chromedriver 2.30發佈。


更新

Chromedriver 2.30過時了,應該可以解決這個問題。

+0

驗證這個問題仍然存在最新的驅動程序......這個人使用** WebdriverJS **執行繁重的硒作業後,並且磁盤空間不足,我得到了我。仍使用** chromedriver **'2.30.1'在'%TEMP%'中看到'scoped_dirXXXX'目錄卡住了。將不得不去上面張貼的手動清理路線...只是創建5-6K驅動程序,你也會看到;-) – SliverNinja

+0

我承認我正在從'2.30'補丁說明,說這個問題是固定的。你在哪裏得到'2.30.1'?我沒有看到任何提及該版本的內容。 – cdzar

+0

[顯然這是我找到的節點驅動程序的版本](https://github.com/giggio/node-chromedriver/releases) – SliverNinja

3

採用了最新chromedriver2.30.1並沒有解決我這個問題 - 我不停地跑並行作業時,在我的%TEMP%目錄存儲空間不足。

最好的解決辦法是控制userDataDir通過Chrome瀏覽器選項和目錄的處置自己,你driver.quit()

如果你的過程是同步的比@ cdzar的解決方案上面的工作,但對於並行作業,你真正需要的後來控制目錄創建/處置你自己。

您可以checkout other chromium command line switches here

+0

我使用ChromeDrive 2.34和Chrome 64版。我仍然有這個問題,我可以報​​告說,非常煩人的是如此快速地填滿硬盤,實質上是垃圾。 – sapbucket

0

已被報告和修復。結帳2.30或2.31

UPD。至少爲我們的網格工作。如果你仍然有問題,最好在productforums.google.com上報告任何scope_dir線程 另外,在修復之前,我們使用PS腳本清除.. * \ AppData \ Local \ Temp中的所有文件。

UPD 。檢查Chrome瀏覽器已完成更新過程。隨着此修復,我們遇到了一個問題,即使在重新啓動後,瀏覽器仍處於「更新完成需要重新啓動」狀態。可能瀏覽器和驅動程序都需要更新才能正常工作 - 不能肯定地說。

相關問題