2017-04-08 1154 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浏览器已完成更新过程。随着此修复,我们遇到了一个问题,即使在重新启动后,浏览器仍处于“更新完成需要重新启动”状态。可能浏览器和驱动程序都需要更新才能正常工作 - 不能肯定地说。

相关问题