Esta mensagem de erro ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... implica que o ChromeDriver não conseguiu iniciar / gerar uma nova sessão do WebBrowser, ou seja, do navegador Chrome .
Seus testes de código e as informações de versão de todos os binários nos dariam alguma dica sobre o que está acontecendo de errado.
No entanto, conforme Adicionar --disable-dev-shm-use aos sinalizadores de inicialização padrão, parece que adicionar o argumento --disable-dev-shm-usage
temporariamente resolverá o problema.
Se você deseja iniciar / expandir uma nova sessão do navegador Chrome , pode usar a seguinte solução:
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
disable-dev-shm-use
Conforme base_switches.cc, disable-dev-shm-usage
parece válido apenas no sistema operacional Linux :
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// The /dev/shm partition is too small in certain VM environments, causing
// Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
// work-around this issue (a temporary directory will always be used to create
// anonymous shared memory files).
const char kDisableDevShmUsage[] = "disable-dev-shm-usage";
#endif
Na discussão, adicione uma opção para usar / tmp em vez de / dev / shm David menciona:
Eu acho que dependeria de como são montados o / dev / shm e / tmp. Se ambos são montados como tmpfs, estou assumindo que não haverá diferença. se por algum motivo / tmp não for mapeado como tmpfs (e eu acho que é mapeado como tmpfs por padrão pelo systemd), o gerenciamento de memória compartilhada do Chrome sempre mapeia arquivos na memória ao criar arquivos compartilhados anônimos, portanto, nesse caso, não deve ser muita diferença. Eu acho que você pode forçar testes de telemetria com o sinalizador ativado e ver como vai.
Quanto ao porquê de não usar por padrão, foi adiado pela equipe de memória compartilhada, acho que faz sentido que ele esteja usando / dev / shm para memória compartilhada por padrão.
Por fim, tudo isso deve mudar para usar o memfd_create, mas acho que isso não acontecerá tão cedo, pois exigirá uma refatoração significativa do gerenciamento de memória do Chrome.
Outro
Aqui está o link para a história da Sandbox .