Це повідомлення про помилку ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... означає, що ChromeDriver не зміг ініціювати / породити новий веб- браузер, тобто сеанс браузера Chrome .
Ваші випробування з кодом та інформація про версію всіх бінарних файлів дали б нам підказку про те, що відбувається не так.
Однак, відповідно до Add --disable-dev-shm-use до прапорів запуску за замовчуванням, схоже, додавання аргументу --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");
відключити-dev-shm-використання
Згідно з базовим_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 (і я думаю, що за замовчуванням відображається як tmpfs системою), керування спільною пам’яттю в Chrome завжди створює файли в пам'ять під час створення анонімних спільних файлів, тому навіть у такому випадку не повинно бути велика різниця. Я думаю, ви можете змусити тести на телеметрію із включеним прапором і подивитися, як це відбувається.
Щодо того, чому б не використовувати за замовчуванням, це було відштовхується командою спільної пам’яті, я думаю, має сенс використовувати за замовчуванням використання / dev / shm для спільної пам'яті.
Зрештою, все це має рухатись до використання memfd_create, але я не думаю, що це станеться незабаром, оскільки це потребує значного рефакторингу управління пам’яттю Chrome.
Outro
Ось посилання на історію пісочниці .