org.openqa.nium.WebDriverException: erreur inconnue: le fichier DevToolsActivePort n'existe pas en essayant D'initier le 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

P. S tout fonctionne bien sous Firefox

21
demandé sur New contributor 2018-06-01 14:21:20

7 réponses

Ce message d'erreur...

org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist 

...implique que les ChromeDriver n'a pas pu lancer / lancer un nouveau WebBrowser i.e. Navigateur Chrome session.

vos essais de code et les informations de versioning de tous les binaires nous auraient donné quelques indices sur ce qui se passe mal.

Cependant, comme par Add --disable-dev-shm-utilisation de lancement par défaut drapeaux semble ajouter l'argument --disable-dev-shm-usage temporaire résoudre le problème.

si vous désirez lancer / espacer un nouveau Navigateur 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");

disable-dev-shm-utilisation

selon base_switches.ccdisable-dev-shm-usage semble être valide uniquement sur Linux OS:

#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 ajouter une option pour utiliser /tmp au lieu de / dev / shm David mentionne:

je pense que cela dépend de la façon dont sont montés /dev/shm et /tmp. S'ils sont tous les deux montés en tmpfs, je suppose qu'il n'y aura pas de différence. si, pour une raison ou une autre, /tmp n'est pas mappé en tant que tmpfs (et je pense qu'il est mappé en tant que tmpfs par défaut par systemd), la gestion de la mémoire partagée GoogleChrome fait toujours la correspondance entre les fichiers et la mémoire lors de la création de fichiers partagés anonymes, donc même dans ce cas, cela ne devrait pas faire de grande différence. Je suppose que vous pourriez forcer test télémétrique avec le drapeau activé et voir comment ça se passe.

pour ce qui est du pourquoi ne pas utiliser par défaut, c'était un repoussé par l'équipe de la mémoire partagée, je suppose que ça a du sens que ça devrait être useing /dev/shm pour la mémoire partagée par défaut.

en fin de compte, tout cela devrait se déplacer pour utiliser memfd_create, mais je ne pense pas que cela va se produire dans un avenir proche, car il va falloir remanier la gestion de mémoire Chrome de manière significative.

14
répondu New contributor 2018-09-29 12:34:07

j'ai commencé à voir ce problème le lundi 2018-06-04. Nos tests sont effectués chaque jour de la semaine. Il semble que la seule chose qui a changé était la version google-chrome (qui avait été mis à jour à jour) JVM et Selenium étaient des versions récentes sur Linux box ( Java 1.8.0_151, selenium 3.12.0, google-chrome 67.0.3396.62, et xvfb-run).

Ajouter spécifiquement les arguments "--no-sandbox" et "--disable-dev-shm-utilisation" arrêté de l'erreur. Je vais regarder dans ces problèmes pour trouver plus d'informations sur l'effet, et d'autres questions comme dans ce qui a déclenché google-chrome à mettre à jour.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
11
répondu Pete Kelley 2018-06-06 17:21:29

j'ai eu le même problème en python. Le ci-dessus 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)
4
répondu Vinodh Periyasamy 2018-06-13 01:15:55

mise à Jour:

je suis capable de passer à travers le problème et maintenant je suis capable d'accéder au chrome avec l'url désiré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, le fichier DevToolsActivePort n'existe pas est causé lorsque chrome est incapable de trouver sa référence dans le dossier scoped_dirXXXXX.

les Mesures prises pour résoudre le problème

  1. j'ai désactivé tous les processus chrome et les processus chrome driver.
  2. ajout du code ci-dessous pour invoquer 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);
    

en utilisant les étapes ci-dessus, j'ai pu résoudre le problème.

Merci pour vos réponses.

4
répondu Kumar Sampath 2018-07-10 07:09:46

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

La seule chose qui a aidé c'est de fixer l'argument

chrome_options.add_argument('--headless')

Mais quand nous avons enquêté plus loin, nous avons remarqué que l'écran XVFB ne démarre pas la propriété et cela provoque cette erreur. Après avoir corrigé l'écran XVFB, il a résolu le problème.

3
répondu Sreejith Edayillam 2018-09-06 14:43:17

j'ai eu le même problème, mais dans mon cas, chrome a déjà été installé dans le dossier user temp, après cela a été réinstallé dans les fichiers de programme. Donc toute solution fournie ici ne m'a pas aidé. Mais si fournir le chemin vers chrome.exe:

chromeOptions.setBinary("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe");

j'espère que cela aide quelqu'un =)

1
répondu Sergiy Konoplyaniy 2018-07-13 13:21:42

Je résous ce problème en installant yum -y install gtk3-devel gtk3-devel-docs", il fonctionne ok

Mon travail env est :

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

Avant:

enter image description hereenter image description here

Après:

enter image description hereenter image description here

0
répondu 何贤勇 2018-07-30 07:54:06