it-swarm-ja.com

tmpディレクトリを選択するヘッドレス/ no-sandbox-modeのchromeコマンドライン引数は何ですか?

私はSeleniumでヘッドレスのクロムを実行しています。

一連のセッションを実行すると、/tmpに多数の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

GoogleとはChromeコマンドラインスイッチこれらのディレクトリに別のパスを選択するように設定できますか?ルートディスクのクラウド上のディスク容量が少ないため、/tmpを使用できません。

chromeプロセスのシャットダウン時にこれらのディレクトリを自動的に削除する方法はありますか?

https://peter.sh/experiments/chromium-command-line-switches/ を参照してください

1

うわー、これを見つけるのに長い時間がかかりました:

これを行うコマンドライン引数はありません。しかし、環境変数は可能です。

関連するchromedriverコードは次のとおりです。

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

したがって、Linuxの場合、これを行うには、ChromeセッションでTMPDIR環境変数を設定するだけです。

したがって、Seleniumでは、次のことを行う必要があります。

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