Это сообщение об ошибке ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... подразумевает, что ChromeDriver не смог инициировать / создать новый WebBrowser т.е. Браузер Chrome сеанс.
Ваши тесты кода и информация о версиях всех двоичных файлов дала бы нам подсказку о том, что происходит не так.
Однако в соответствии с Добавьте --disable-dev-shm-using к флагам запуска по умолчанию кажется, добавление аргумента --disable-dev-shm-usage
временно решит проблему.
Если вы хотите начать / охватить новый сеанс Chrome Browser , вы можете использовать следующее решение:
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-using
Согласно 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
Вот ссылка на историю Песочница .