Kar*_*thi 15 selenium selenium-chromedriver selenium-webdriver
由于chromedriver在执行结束时没有删除名为scoped_*的文件夹,因此最新的chromedriver.exe会因磁盘空间问题而运行.它占用了近20 GB的空间用于400次测试.我尝试了2.28和2.29版本的chromedriver.我正在使用driver.close()和driver.Quit()正确退出驱动程序.Chrome浏览器版本为57.
小智 10
我通过在退出驱动程序后添加以"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 + ".");
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
这是一个已知的错误,将使用Chromedriver 2.30 https://bugs.chromium.org/p/chromedriver/issues/detail?id=644修复
这似乎是ChromeDriver和Chrome之间的竞争条件.ChromeDriver会创建这些临时目录供Chrome使用,最后ChromeDriver会尝试删除这些目录.ChromeDriver等待主要Chrome进程在删除之前终止,但某些Chrome子进程可能仍在运行并保留这些目录,从而导致删除失败.目前ChromeDriver不会重试删除.
删除Daniel提到的临时文件可能是一个临时解决方案,但我会在Chromedriver 2.30发布后立即将其删除.
Chromedriver 2.30已经出局,应该解决这个问题.
使用最新的chromedriver 2.30.1
并没有解决我的问题 -%TEMP%
在运行并行selenium作业时,我的目录中的存储空间一直不足。
最好的解决方案是userDataDir
通过Chrome 选项进行控制,并在使用后自行处理该目录driver.quit()
如果您的进程是同步的,那么上面的 @cdzar 解决方案就可以工作,但是对于并行作业,您确实需要自己控制目录创建/处置。