Это сообщение об ошибке ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... подразумевает, что ChromeDriver не смог инициировать / создать новый WebBrowser, т.е. сеанс браузера Chrome .
Ваши испытания кода и информация о версиях всех двоичных файлов дала бы нам подсказку о том, что происходит не так.
Однако в соответствии с параметром « Добавить --disable-dev-shm-Использование к флагам запуска по умолчанию» добавление аргумента --disable-dev-shm-usage
временно решит проблему.
Если вы хотите инициировать / охватить новый сеанс браузера Chrome, вы можете использовать следующее решение:
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-ое-использование
Согласно base_switches.cc disable-dev-shm-usage
кажется действительным только на ОС 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
В обсуждении Добавить параметр, чтобы использовать / tmp вместо / dev / shm, Дэвид упоминает:
Я думаю, это будет зависеть от того, как смонтированы / dev / shm и / tmp. Если они оба смонтированы как tmpfs, я предполагаю, что не будет никакой разницы. если по какой-либо причине / tmp не отображается как tmpfs (и я думаю, что по умолчанию systemd отображает как tmpfs), управление общей памятью chrome всегда отображает файлы в память при создании анонимных общих файлов, поэтому даже в этом случае не должно быть большая разница Я полагаю, вы могли бы принудительно запустить тесты телеметрии с включенным флагом и посмотреть, как он работает.
Что касается того, почему не использовать по умолчанию, команда общей памяти отодвинула назад, я думаю, что имеет смысл использовать / dev / shm для общей памяти по умолчанию.
В конечном итоге все это должно перейти на использование memfd_create, но я не думаю, что это произойдет в ближайшее время, поскольку это потребует значительного рефакторинга управления памятью Chrome.
Outro
Вот ссылка на историю Песочницы .