Это сообщение об ошибке ...
unknown error: DevToolsActivePort file doesn't exist
... подразумевает, что ChromeDriver не смог инициировать / создать новый WebBrowser т.е. Браузер Chrome сеанс.
Ваши испытания кода и информация о версиях всех двоичных файлов дала бы нам некоторый намек на то, что происходит не так.
Однако в соответствии с Добавьте --disable-dev-shm-using к флагам запуска по умолчанию кажется, добавление аргумента --disable-dev-shm-usage
временно решит проблему.
Если вы хотите начать / охватить новый Браузер Chrome сеанс, вы можете использовать следующее решение Java :
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
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("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
disable-dev-shm-using
Согласно base_switches.cc disable-dev-shm-usage
, похоже, действует только на Linix OS :
#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 /ШМ и / TMP установлены.Если они оба смонтированы как tmpfs, я предполагаю, что не будет никакой разницы.если по какой-то причине / tmp не отображается как tmpfs (и я думаю, что по умолчанию systemd отображает как tmpfs), управление общей памятью chrome всегда отображает файлы в память при создании анонимных общих файлов, поэтому даже в этом случае не должно бытьбольшая разница.Я думаю, вы могли бы принудительно запустить телеметрические тесты с включенным флагом и посмотреть, как он работает.
Что касается того, почему не использовать по умолчанию, команда общей памяти отодвинула его назад, я думаю, что это имеет смыслпо умолчанию используется / dev / shm для совместно используемой памяти.
В конечном итоге все это должно быть перенесено на использование memfd_create, но я не думаю, что это произойдет в ближайшее время, поскольку это потребует значительного рефакторинга управления памятью Chrome,
Подробное обсуждение также можно найти в org.openqa.selenium.WebDriverException: неизвестная ошибка: файл DevToolsActivePort не существует при попытке запуска браузера Chrome