Saltar al contenido

Chromedriver no elimina el directorio * con alcance en la carpeta temporal después de que se completa la prueba

Solución:

Logré esto agregando la eliminación de carpetas temporales que comienza con “scoped_dir” después de salir del controlador como:

 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:rn" +
                            "Exception: " + ex.Message + ".");
                }
            }
        } 

¡Espero eso ayude!

Este es un error conocido que se solucionará con Chromedriver 2.30 https://bugs.chromium.org/p/chromedriver/issues/detail?id=644

Esto parece ser una condición de carrera entre ChromeDriver y Chrome. ChromeDriver crea estos directorios temporales para que los utilice Chrome y, al final, ChromeDriver intenta eliminar esos directorios. ChromeDriver espera a que finalice el proceso principal de Chrome antes de realizar la eliminación, pero es posible que algunos procesos secundarios de Chrome aún se estén ejecutando y se aferren a esos directorios, lo que hace que la eliminación falle. Actualmente, ChromeDriver no vuelve a intentar la eliminación.

Eliminar los archivos temporales como el que mencionó Daniel puede ser una solución temporal, pero lo eliminaría tan pronto como se publique Chromedriver 2.30.


Actualizar

Chromedriver 2.30 está disponible y debería solucionar este problema.

Actualización 2

Parece que su kilometraje puede variar con esto. Las notas de la versión para esa versión enumeraron esto como un problema resuelto en el día, pero algunas personas aún ven el problema. Además, esta versión es extremadamente antigua en este punto, por lo que, si bien esta respuesta era relevante en el momento de la publicación, se deben usar versiones más nuevas de Chromedriver.

Utilizando la última conductor cromado 2.30.1 no resolvió el problema por mí – seguía quedándome sin almacenamiento en mi %TEMP% directorio cuando se ejecuta en paralelo selenio trabajos.

La mejor solución es controlar la userDataDir vía Opciones de Chrome y deshacerse del directorio usted mismo después de que usted driver.quit()

Si su proceso es síncrono, la solución de @ cdzar anterior funcionará, pero para trabajos paralelos realmente necesita controlar el directorio create / dispose usted mismo.

Puede consultar otros modificadores de línea de comando de cromo aquí.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *