Qual é o argumento da linha de comando chrome no modo headless / no-sandbox que seleciona o diretório tmp?

0

Estou executando o cromo sem cabeça com selênio.

Quando executo várias sessões, acabo com vários arquivos tmp em /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

O que é o comutador de linha de comando do Google Chrome que posso definir para escolher um caminho diferente para esses diretórios? Não consigo usar /tmp porque o disco raiz não tem muito espaço em disco na nuvem.

Existe uma maneira de ter esses diretórios excluídos automaticamente após o desligamento do processo chrome?

Veja link

    
por Nicholas DiPiazza 02.08.2018 / 17:32

1 resposta

0

Uau, demorei muito tempo para encontrar isso:

Não há argumento de linha de comando que faça isso. Mas a variável de ambiente pode.

Aqui está o código do cromo relevante:

link

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

Assim, para o Linux, você pode simplesmente definir uma variável de ambiente TMPDIR na sessão do Google Chrome para fazer isso.

Então, em selênio, você precisa fazer isso:

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