Ce message d'erreur...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
...implique que le ChromeDriver était pas en mesure d'initier/lancer un nouveau Navigateur web à savoir le Navigateur google Chrome session.
Votre code d'essais et les informations de gestion des versions de tous les fichiers binaires aurait donné un indice sur ce qui va mal.
Cependant, comme pour Ajouter l'option --disable-dev-shm-utilisation de lancement par défaut drapeaux semble que l'ajout de l'argument --disable-dev-shm-usage
sera temporaire résoudre le problème.
Si vous avez envie d'entreprendre/span un nouveau Navigateur google Chrome session, vous pouvez utiliser la solution suivante:
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");
désactiver-dev-shm-utilisation
Comme par base_switches.cc disable-dev-shm-usage
semble être valide uniquement sur le système d'exploitation 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
Dans la discussion Ajout d'une option pour utiliser /tmp à la place de /dev/shm David mentionne:
Je pense que cela dépendra de la façon dont sont /dev/shm et /tmp monté.
Si ils sont tous les deux montés comme des tmpfs je suppose que il n'y aura aucune différence.
si, pour quelque raison que /tmp n'est pas mappé comme tmpfs (et, je pense, est mappé comme tmpfs par défaut par systemd), chrome mémoire partagée de la gestion toujours les cartes les fichiers en mémoire lors de la création d'un anonyme de fichiers partagés, de sorte que même dans ce cas, ne devrait pas être beaucoup de différence. Je suppose que vous pourriez force de télémétrie tests avec le drapeau activé et voir comment il va.
Comme pour pourquoi ne pas utiliser par défaut, il était repoussé par la mémoire partagée de l'équipe, j'imagine que c'est logique, il devrait être en utilisant /dev/shm pour la mémoire partagée par défaut.
En fin de compte tout cela doit être en mouvement pour utiliser memfd_create, mais je ne pense pas que cela va arriver bientôt, car il faudra refactoring Chrome de gestion de la mémoire de manière significative.
Outro
Voici le lien pour le Sandbox de l' histoire.