Este mensaje de error ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... implica que ChromeDriver no pudo iniciar / generar un nuevo WebBrowser, es decir, la sesión del navegador Chrome .
Sus pruebas de código y la información de versiones de todos los binarios nos habrían dado alguna pista sobre lo que está mal.
Sin embargo, según Add --disable-dev-shm-use a las banderas de inicio predeterminadas, parece que agregar el argumento --disable-dev-shm-usage
resolverá temporalmente el problema.
Si desea iniciar / abarcar una nueva sesión del navegador Chrome , puede usar la siguiente solución:
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
Según base_switches.cc disable-dev-shm-usage
parece ser válido solo en el sistema operativo 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
En la discusión Agregue una opción para usar / tmp en lugar de / dev / shm David menciona:
Creo que dependería de cómo se monten / dev / shm y / tmp. Si ambos están montados como tmpfs, supongo que no habrá ninguna diferencia. si por alguna razón / tmp no se asigna como tmpfs (y creo que se asigna como tmpfs de forma predeterminada por systemd), la administración de memoria compartida de Chrome siempre asigna archivos a la memoria cuando se crean archivos compartidos anónimos, por lo que incluso en ese caso no debería mucha diferencia Supongo que podría forzar las pruebas de telemetría con la bandera habilitada y ver cómo funciona.
En cuanto a por qué no usarlo de forma predeterminada, fue rechazado por el equipo de memoria compartida, supongo que tiene sentido que esté usando / dev / shm para la memoria compartida de manera predeterminada.
En última instancia, todo esto debería moverse para usar memfd_create, pero no creo que eso suceda pronto, ya que requerirá una refactorización significativa de la administración de memoria de Chrome.
Outro
Aquí está el enlace a la historia de Sandbox .