Ten komunikat o błędzie ...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
... sugeruje, że ChromeDriver był w stanie zainicjować / tarło nowy WebBrowser czyli Chrome sesji.
Twoje testy kodu i informacje o wersji wszystkich plików binarnych dałyby nam pewną wskazówkę, co się dzieje.
Jednak zgodnie z Dodaj --disable-dev-shm-usage do domyślnych flag uruchamiania wydaje się, że dodanie argumentu --disable-dev-shm-usage
tymczasowo rozwiąże problem.
Jeśli chcesz zainicjować / rozszerzyć nową sesję przeglądarki Chrome , możesz skorzystać z następującego rozwiązania:
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");
wyłącz-dev-shm-użycie
Zgodnie z base_switches.cc disable-dev-shm-usage
wydaje się działać tylko w systemie operacyjnym 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
W dyskusji Dodaj opcję użycia / tmp zamiast / dev / shm David wspomina:
Myślę, że zależałoby to od tego, jak są zamontowane / dev / shm i / tmp. Jeśli oba są zamontowane jako tmpfs, zakładam, że nie będzie żadnej różnicy. jeśli z jakiegoś powodu / tmp nie jest mapowane jako tmpfs (i myślę, że jest mapowane domyślnie jako tmpfs przez systemd), zarządzanie pamięcią współdzieloną chrome zawsze mapuje pliki do pamięci podczas tworzenia anonimowych plików współdzielonych, więc nawet w tym przypadku nie powinno być duża różnica. Myślę, że możesz wymusić testy telemetryczne z włączoną flagą i zobaczyć, jak to działa.
Jeśli chodzi o to, dlaczego nie używać domyślnie, zostało to odrzucone przez zespół pamięci współdzielonej, myślę, że ma sens, aby domyślnie używać / dev / shm do pamięci współdzielonej.
Ostatecznie wszystko to powinno zmierzać do użycia memfd_create, ale nie sądzę, aby miało to nastąpić w najbliższym czasie, ponieważ będzie to wymagało znacznej refaktoryzacji zarządzania pamięcią Chrome.
Outro
Oto link do historii Sandbox .