Quel est l'argument de ligne de commande de chrome dans headless / no-sandbox-mode qui sélectionne le répertoire tmp?

0

Je cours avec du chrome sans tête avec du sélénium.

Quand je lance un tas de sessions je me retrouve avec un tas de fichiers tmp dans /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'est-ce que le commutateur de ligne de commande Google Chrome que je peux configurer pour choisir un chemin différent pour ces répertoires? Je ne peux pas utiliser /tmp parce que le disque racine ne dispose pas de beaucoup d'espace disque sur le cloud.

Existe-t-il un moyen de supprimer automatiquement ces répertoires à l’arrêt du processus Chrome?

Voir https://peter.sh/experiments/chromium-command-line-switches/

Nicholas DiPiazza
la source

Réponses:

0

Wow, il m'a fallu beaucoup de temps pour trouver ceci:

Aucun argument de ligne de commande ne le fait. Mais la variable d'environnement peut.

Voici le code de chromedriver pertinent:

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;
}

Donc, pour Linux, vous pouvez simplement définir une variable d’environnement TMPDIR dans la session Chrome.

Donc, dans le sélénium, vous devez faire ceci:

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