¿Cuál es el argumento de la línea de comando de Chrome en modo sin cabeza/sin zona de pruebas que selecciona el directorio tmp?

¿Cuál es el argumento de la línea de comando de Chrome en modo sin cabeza/sin zona de pruebas que selecciona el directorio tmp?

Estoy ejecutando Chromium sin cabeza con Selenium.

Cuando ejecuto varias sesiones termino con un montón de archivos tmp en/tmp

drwx------  3 nick nick 4.0K Jul 28 05:00 .org.chromium.Chromium.OpPRkQ
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.tAwQZu
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.JiqQZu
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.7Vce75
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.r5ITam
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.eWgdRV
drwx------  3 nick nick 4.0K Jul 29 00:00 .org.chromium.Chromium.8TITam
drwx------  3 nick nick 4.0K Jul 29 05:00 .org.chromium.Chromium.aeuzcU
drwx------  3 nick nick 4.0K Jul 29 05:00 .org.chromium.Chromium.cBHew4

¿Qué es el interruptor de línea de comando de Google Chrome que puedo configurar para elegir una ruta diferente para estos directorios? No puedo usarlo /tmpporque el disco raíz no tiene mucho espacio en la nube.

¿Hay alguna manera de eliminar estos directorios automáticamente al cerrar el proceso de Chrome?

Verhttps://peter.sh/experiments/chromium-command-line-switches/

Respuesta1

Vaya, me tomó mucho tiempo encontrar esto:

No existe ningún argumento de línea de comando que haga esto. Pero la variable de entorno sí puede.

Aquí está el código de Chromedriver relevante:

https://chromium.googlesource.com/chromium/chromium/+/master/base/file_util_posix.cc

#if !defined(OS_MACOSX)
bool GetTempDir(FilePath* path) {
  const char* tmp = getenv("TMPDIR");
  if (tmp)
    *path = FilePath(tmp);
  else
#if defined(OS_ANDROID)
    return PathService::Get(base::DIR_CACHE, path);
#else
    *path = FilePath("/tmp");
#endif
  return true;
}

Entonces, para Linux, puede configurar una variable de entorno TMPDIR en la sesión de Chrome para hacer esto.

Entonces, en selenio, debes hacer esto:

ChromeDriverService chromeDriverService = new ChromeDriverService.Builder()
         .usingDriverExecutable(new File("driver_linux/chromedriver"))
         .usingAnyFreePort()
         .withEnvironment(ImmutableMap.of("TMPDIR", "/some/other/tmp/dir")).build();

información relacionada