Was ist das Chrome-Befehlszeilenargument im Headless-/No-Sandbox-Modus, das das temporäre Verzeichnis auswählt?

Was ist das Chrome-Befehlszeilenargument im Headless-/No-Sandbox-Modus, das das temporäre Verzeichnis auswählt?

Ich führe Chromium ohne Headless mit Selenium aus.

Wenn ich eine Reihe von Sitzungen durchführe, habe ich am Ende eine Reihe von temporären Dateien in/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

Welchen Befehlszeilenschalter kann ich in Google Chrome einstellen, um einen anderen Pfad für diese Verzeichnisse auszuwählen? Ich kann ihn nicht verwenden, /tmpda auf der Root-Festplatte nicht viel Speicherplatz in der Cloud vorhanden ist.

Gibt es eine Möglichkeit, diese Verzeichnisse beim Beenden des Chrome-Prozesses automatisch löschen zu lassen?

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

Antwort1

Wow, ich habe lange gebraucht, um das hier zu finden:

Es gibt kein Befehlszeilenargument, das dies tut. Aber Umgebungsvariablen können das.

Hier ist der relevante Chromedriver-Code:

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

Unter Linux können Sie hierzu einfach eine TMPDIR-Umgebungsvariable in der Chrome-Sitzung festlegen.

In Selenium müssen Sie also Folgendes tun:

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

verwandte Informationen