333 votes

WebDriverException: erreur inconnue: le fichier DevToolsActivePort n'existe pas lors de la tentative de lancement du navigateur Chrome

J'essaie de lancer Chrome avec une URL, le navigateur se lance et il ne fait rien après cela.

Je vois l'erreur ci-dessous après 1 minute:

 Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)
 

Ma configuration:

  • Chrome: 66
  • ChromeBrowser: 2.39.56

PS tout fonctionne bien dans Firefox

206voto

New contributor Points 31198

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.

89voto

Dalmarf Points 11

J'ai commencé à voir ce problème sur le lundi 2018-06-04. Nos tests s'exécutent chaque jour de la semaine. Il semble que la seule chose qui a changé, c'est le google-chrome version (qui avait été mis à jour en cours) de la JVM et le Sélénium ont été les versions les plus récentes sur Linux ( Java 1.8.0_151, le sélénium 3.12.0, google-chrome 67.0.3396.62, et xvfb-run).
Plus précisément ajoutant les arguments "--no-sandbox" et "--disable-dev-shm-l'utilisation de la" arrêté de l'erreur. Je vais examiner ces questions pour trouver plus d'infos à propos de l'effet, et d'autres questions en ce qui a déclenché google-chrome pour mettre à jour.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");

76voto

Nous avions les mêmes problèmes sur nos esclaves jenkins (machine Linux) et avons essayé toutes les options ci-dessus.

La seule chose aidée est de définir l'argument

 chrome_options.add_argument('--headless')
 

Mais lorsque nous avons approfondi nos recherches, nous avons remarqué que l'écran XVFB ne démarrait pas la propriété et que cela provoquait cette erreur. Après avoir corrigé l'écran XVFB, il a résolu le problème.

57voto

Vinodh Periyasamy Points 201

J'ai eu le même problème en python. Ce qui précède a aidé. Voici ce que j'ai utilisé en python -

 chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/path/to/your_chrome_driver_dir/chromedriver',chrome_options=chrome_options)
 

24voto

Kumar Sampath Points 1381

Mise à jour:

Je suis en mesure d'obtenir par le biais de la question et maintenant, je suis en mesure d'accéder le chrome avec l'url souhaitée.

Résultats des efforts fournis solutions:

J'ai essayé tous les paramètres, comme prévu ci-dessus, mais j'ai été incapable de résoudre le problème

Explication à propos de la question:

Selon mon observation DevToolsActivePort fichier n'existe pas, est causée lorsque google chrome ne parvient pas à trouver sa référence dans scoped_dirXXXXX dossier.

Les mesures prises pour résoudre le problème

  1. J'ai tué tout le chrome des processus et chrome pilote de processus.
  2. Ajouté le code ci-dessous pour appeler le chrome

    System.setProperty("webdriver.chrome.driver","pathto\\chromedriver.exe");    
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);
    driver.get(url);
    

À l'aide de la procédure ci-dessus, j'ai été en mesure de résoudre le problème.

Merci pour vos réponses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X