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

153

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

Kumar Sampath
la source
1
Pouvez-vous mettre à jour la question avec le code à l'origine de cette erreur?
GPT14
J'ai reçu cette erreur lorsque vncserver s'est écrasé et que je n'avais plus d'affichage X
xtian

Réponses:

71

Ce message d'erreur ...

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

... implique que ChromeDriver n'a pas pu lancer / générer une nouvelle session WebBrowser, c'est-à-dire le navigateur Chrome .

Vos essais de code et les informations de version de tous les binaires nous auraient donné des indices sur ce qui ne va pas.

Cependant, selon Ajouter --disable-dev-shm-usage aux indicateurs de lancement par défaut, il semble que l'ajout de l'argument --disable-dev-shm-usagerésoudra temporairement le problème.

Si vous souhaitez lancer / étendre une nouvelle session du navigateur Chrome , 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-usage

Selon base_switches.cc disable-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, ajoutez une option pour utiliser / tmp au lieu de / dev / shm, David mentionne:

Je pense que cela dépendrait de la manière dont / dev / shm et / tmp sont montés. S'ils sont tous deux montés en tmpfs, je suppose qu'il n'y aura aucune différence. si pour une raison quelconque / 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 de chrome mappe toujours les fichiers en mémoire lors de la création de fichiers partagés anonymes, donc même dans ce cas ne devrait pas être beaucoup de différence. Je suppose que vous pouvez forcer les tests de télémétrie avec le drapeau activé et voir comment cela se passe.

Quant à savoir pourquoi ne pas utiliser par défaut, il a été repoussé par l'équipe de mémoire partagée, je suppose qu'il est logique qu'il devrait utiliser / dev / shm pour la mémoire partagée par défaut.

En fin de compte, tout cela devrait passer à l'utilisation de memfd_create, mais je ne pense pas que cela se produira de si tôt, car cela nécessitera de refactoriser la gestion de la mémoire Chrome de manière significative.


Outro

Voici le lien vers l' histoire de Sandbox .

DebanjanB
la source
8
Mais qu'est-ce qui a causé cette erreur spécifique DevToolsActivePort file doesn't existet pourquoi a-t-elle soudainement commencé à apparaître?
3
Les éléments «Considérations supplémentaires» - ils semblent tout à fait applicables à ce problème. Surtout dans ce genre de situation où la cause exacte du problème n'avait pas été établie.
Pete Kelley du
5
À partir de la partie supprimée du message de @ DebanjanB, cela peut être causé par l'utilisation d'un Chromedriver qui ne prend pas en charge la version de Chrome installée. Cela peut se produire, par exemple, si Chrome est mis à niveau sans mettre à niveau Chromedriver.
expz
Cela résolvait le problème pour moi, ce n'est pas le cas sur mon système actuel (Ubuntu 18 + Python 3.7)
tw0000
3
Au cas où cela aiderait quelqu'un d'autre, il disable-dev-shm-usagene suffisait pas d' ajouter . J'ai dû également ajouter --no-sandboxpour que cela fonctionne. C'était la solution complète pour moi pour Selenium-java:chromeOptions.addArguments("--no-sandbox", "--disable-dev-shm-usage");
George Pantazes
52

J'ai commencé à voir ce problème le lundi 04/06/2018. Nos tests se déroulent chaque jour de la semaine. Il semble que la seule chose qui ait changé était la version google-chrome (qui avait été mise à jour vers la version actuelle) JVM et Selenium étaient des versions récentes sur Linux box (Java 1.8.0_151, sélénium 3.12.0, google-chrome 67.0.3396.62, et xvfb-run).
Plus précisément, l'ajout des arguments " --no-sandbox " et " --disable-dev-shm-usage " a stoppé l'erreur. Je vais examiner ces problèmes pour trouver plus d'informations sur l'effet et d'autres questions comme ce qui a déclenché la mise à jour de google-chrome.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
Pete Kelley
la source
Je tiens à préciser que ce code fonctionnait chaque jour de la semaine sur une boîte Ubuntu Linux, mais un code équivalent sur le bureau Windows fonctionnait bien même le lundi. Je n'ai trouvé aucune information sur la fonctionnalité du fichier DevToolsActivePort et cela serait également utile. PK
Pete Kelley
1
Ces options ont également arrêté l'erreur pour moi. pd: en utilisant une pile Rails.
Mario Pérez
Je reçois toujours des [java] [1536892035.965][SEVERE]: Timed out receiving message from renderer: 60.000erreurs même avec ça
Jonathan
@Jonathan - Salut! pouvez-vous fournir plus de détails, comme quel système d'exploitation, quelles versions des composants que vous utilisez ou comment vous invoquez le processus?
Pete Kelley
@Toby: Salut! Je ne voulais pas dire que la position faisait une différence, juste l'utilisation minimale de ces paramètres. Il semble que certaines des valeurs par défaut sur lesquelles je m'étais appuyé ont été modifiées lors des mises à niveau. Tout autre détail concernant votre système ou message que vous fournissez peut vous aider.
Pete Kelley
35

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 mettre l'argument

chrome_options.add_argument('--headless')

Mais lorsque nous avons étudié plus en détail, nous avons remarqué que l'écran XVFB ne démarrait pas la propriété et que cela causait cette erreur. Après avoir réparé l'écran XVFB, le problème a été résolu.

Sreejith Edayillam
la source
2
cela a résolu mon problème, lors de l'exécution en utilisant C # (dans ce cas, l'option ressemblait à ceci: options.AddArgument ("- headless");
ozz
XVFB était le problème pour moi
lucaswxp
23

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)
Vinodh Periyasamy
la source
J'ai résolu mon problème avec la mise à niveau de chrome (j'avais déjà le dernier chromedrive), j'ai donc dû également mettre à niveau le navigateur habituel.
axel_ande
19

Mettre à jour:

Je suis capable de résoudre le problème et maintenant je peux accéder au chrome avec l'URL souhaitée.

Résultats de l'essai des solutions fournies:

J'ai essayé tous les paramètres fournis ci-dessus mais je n'ai pas pu résoudre le problème

Explication concernant le problème:

Selon mon observation, le fichier DevToolsActivePort n'existe pas lorsque chrome est incapable de trouver sa référence dans le dossier scoped_dirXXXXX.

Mesures prises pour résoudre le problème

  1. J'ai tué tous les processus de chrome et les processus de pilote de chrome.
  2. Ajout du 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);
    

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

Merci pour vos réponses.

Kumar Sampath
la source
3
Savez-vous quel effet a useAutomationExtension? Il désactive les extensions pour l'automatisation (captures d'écran / contrôle, etc.) non? L'avènement de DevTools ne devrait-il pas rendre ce changement sans effet? codereview.chromium.org/2785413002
Toby
11

J'étais confronté au même problème récemment et après quelques essais et erreurs, cela a également fonctionné pour moi.

DOIT ÊTRE EN HAUT:

options.addArguments("--no-sandbox"); //has to be the very first option

BaseSeleniumTests.java

public abstract class BaseSeleniumTests {

    private static final String CHROMEDRIVER_EXE = "chromedriver.exe";
    private static final String IEDRIVER_EXE = "IEDriverServer.exe";
    private static final String FFDRIVER_EXE = "geckodriver.exe";
    protected WebDriver driver;

    @Before
    public void setUp() {
        loadChromeDriver();
    }

    @After
    public void tearDown() {
        if (driver != null) {
            driver.close();
            driver.quit();
        }
    }

    private void loadChromeDriver() {
        ClassLoader classLoader = getClass().getClassLoader();
        String filePath = classLoader.getResource(CHROMEDRIVER_EXE).getFile();
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File(filePath))
                .build();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--no-sandbox"); // Bypass OS security model, MUST BE THE VERY FIRST OPTION
        options.addArguments("--headless");
        options.setExperimentalOption("useAutomationExtension", false);
        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.merge(capabilities);
        this.driver = new ChromeDriver(service, options);
    }

}

GoogleSearchPageTraditionalSeleniumTests.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class GoogleSearchPageTraditionalSeleniumTests extends BaseSeleniumTests {

    @Test
    public void getSearchPage() {
        this.driver.get("https://www.google.com");
        WebElement element = this.driver.findElement(By.name("q"));
        assertNotNull(element);
    }

}

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>
Nital
la source
Intéressant ! Comment générez-vous un fichier .side? Est-ce quelque chose qu'une personne chargée du contrôle qualité fait manuellement?
Nital
Vous utilisez l'IDE Selenium pour enregistrer un test. Le résultat est un fichier .side. Il fonctionne bien en utilisant l'IDE, mais j'essaie de l'exécuter en utilisant le sélénium-side-runner mais je rencontre toutes sortes de problèmes avec chromedriver.
pabrams du
doit être la première option - passer des jours à trouver ce haha
cuniculus
Merci! L'ajout de "--no-sandbox" résout mon problème.
matabares le
7

Dans mon cas dans l'environnement suivant:

  • Windows 10
  • Python 3.7.5
  • Google Chrome version 80 et ChromeDriver correspondant dans le chemin C:\Windows
  • sélénium 3.141.0

J'avais besoin d'ajouter les arguments --no-sandboxet --remote-debugging-port=9222à l' ChromeOptionsobjet et d' exécuter le code en tant qu'utilisateur administrateur en déjeunant le Powershell / cmd en tant qu'administrateur.

Voici le morceau de code associé:

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--remote-debugging-port=9222')
driver = webdriver.Chrome(options=options)
Soheil Pourbafrani
la source
1
idem pour moi avec docker avec ubuntu 18.04, py3.7, chrome (pilote) 80
patroqueeet
Cela a fonctionné pour moi sans autres problèmes. Je venais de commencer à rencontrer ce problème aujourd'hui, mais grâce à votre réponse, il est rapidement résolu! Mon environnement est essentiellement le même que le vôtre.
Ryan Harris
6

J'ai rencontré ce problème sur Ubuntu 20 avec Python Selenium après avoir d'abord téléchargé le chromedriver séparément, puis utilisé sudo apt install chromium-browserMême s'il s'agissait de la même version, cela continuait à se produire.

Ma solution consistait à utiliser le pilote chrome fourni avec le package repo situé à

/snap/bin/chromium.chromedriver

driver = webdriver.Chrome(chrome_options=options, executable_path='/snap/bin/chromium.chromedriver')
Lelouch
la source
4

Comme indiqué dans cette autre réponse :

Ce message d'erreur ... implique que ChromeDriver n'a pas pu lancer / générer une nouvelle session WebBrowser, c'est-à-dire le navigateur Chrome.

Parmi les causes possibles, je voudrais mentionner le fait que, dans le cas où vous exécuteriez un Chromium sans tête via Xvfb, vous pourriez avoir besoin de exportla DISPLAYvariable: dans mon cas, j'avais en place (comme recommandé) les options --disable-dev-shm-usageet --no-sandbox, tout était fonctionne bien, mais dans une nouvelle installation exécutant le dernier (au moment de l'écriture) Ubuntu 18.04, cette erreur a commencé à se produire, et la seule solution possible était d'exécuter un export DISPLAY=":20"(après avoir déjà démarré Xvfb avec Xvfb :20&).

Piercarlo Slavazza
la source
Merci OMG. J'étais en train d'apporter quelques modifications à notre conteneur Docker et j'ai accidentellement oublié xvfb. Je n'aurais jamais trouvé ça si tu n'avais pas laissé ça ici :-).
Ryan Shillington
3

J'ai également rencontré ce problème lors de l'intégration avec le serveur jenkins, j'ai été utilisé comme utilisateur root pour le travail de jenkin, le problème a été résolu lorsque j'ai changé l'utilisateur pour un autre utilisateur . Je ne sais pas pourquoi cette erreur se produit pour l'utilisateur root.

  • Google Chrome version 71.0
  • ChromeDriver version 2.45
  • CentOS7 version 1.153
Osanda Deshan
la source
Un utilisateur non root a travaillé pour moi, j'avais la bonne version du pilote chrome pour le chrome.
TicJit
2

Dans mon cas, cela s'est produit lorsque j'ai essayé d'utiliser mon profil utilisateur par défaut:

...
options.addArguments("user-data-dir=D:\\MyHomeDirectory\\Google\\Chrome\\User Data");
...

Cela a déclenché la réutilisation de processus déjà exécutés en arrière-plan par Chrome, de telle sorte que le processus lancé par chromedriver.exe s'est simplement terminé.

Résolution: supprimez tous les processus chrome.exe exécutés en arrière-plan.

Radzimir
la source
J'ai eu un problème similaire, mais sous Linux - mes processus de chrome n'étaient pas correctement sortis après le crash du script et ils étaient réutilisés de manière incorrecte. les tuer a résolu le problème
jeremycg
2

mettre à jour les capacités dans conf.js comme

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['todo-spec.js'],
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--disable-gpu', '--no-sandbox', '--disable-extensions', '--disable-dev-shm-usage']
    }
  },

};
user2694064
la source
2

Dans mon cas, j'essayais de créer un fichier jar exécutable sur le système d'exploitation Windows avec un navigateur Chrome et je veux exécuter la même chose en mode sans tête dans une boîte unix avec CentOs dessus. Et je pointais mon binaire vers un pilote que j'ai téléchargé et emballé avec ma suite. Pour moi, ce problème continue de se produire indépendamment de l'ajout de ce qui suit:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
System.setProperty("webdriver.chrome.args", "--disable-logging");
System.setProperty("webdriver.chrome.silentOutput", "true");
options.setBinary("/pointing/downloaded/driver/path/in/automationsuite");
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
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("window-size=1024,768"); // Bypass OS security model
options.addArguments("--log-level=3"); // set log level
options.addArguments("--silent");//
options.setCapability("chrome.verbose", false); //disable logging
driver = new ChromeDriver(options);

La solution que j'ai essayée et travaillée pour moi est de télécharger le chrome et ses outils sur la machine hôte VM / Unix, d'installer et de pointer le binaire vers cela dans la suite d'automatisation et le bingo! Ça marche :)

Commande de téléchargement:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Commande d'installation:

sudo yum install -y ./google-chrome-stable_current_*.rpm

Mettre à jour la suite avec le chemin binaire ci-dessous de google-chrome:

options.setBinary("/opt/google/chrome/google-chrome");

Et il fonctionne!

parvez basha
la source
Où ajoutons-nous ce code? Je ne vois pas de code C # dans mon fichier
.side
1

J'ai eu le même problème, mais dans mon cas, chrome était précédemment installé dans le dossier temporaire de l'utilisateur, après avoir été réinstallé dans les fichiers de programme. Donc, aucune des solutions fournies ici ne m'aide. Mais si fournir le chemin vers chrome.exe, tout fonctionne:

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

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

Sergiy Konoplyaniy
la source
semble exactement le contraire de @shiuu fix ci
Toby
1

Aucune solution n'a fonctionné pour moi. Mais voici une solution de contournement:

maxcounter=5
for counter in range(maxcounter):
    try:           
        driver = webdriver.Chrome(chrome_options=options,
                          service_log_path=logfile,
                          service_args=["--verbose", "--log-path=%s" % logfile])
        break
    except WebDriverException as e:
        print("RETRYING INITIALIZATION OF WEBDRIVER! Error: %s" % str(e))
        time.sleep(10)
        if counter==maxcounter-1:
            raise WebDriverException("Maximum number of selenium-firefox-webdriver-retries exceeded.")
Alex
la source
1

Vous pouvez obtenir cette erreur simplement pour transmettre de mauvais arguments à Chrome. Par exemple, si je passe "headless"comme argument au C # ChromeDriver, il se déclenche très bien. Si je fais une erreur et que j'utilise la mauvaise syntaxe, "--headless"j'obtiens l' DevToolsActivePort file doesn't existerreur.

Chris Moschini
la source
1

J'ai rencontré le même problème, j'utilise le navigateur UBUNTU, PYTHON et OPERA . dans mon cas, le problème venait du fait que j'avais une version obsolète de l'operadriver.

Solution: 1. Assurez-vous d'installer la dernière version du navigateur Opera (n'utilisez pas Opera beta ou Opera Developer), pour cela, rendez-vous sur le site officiel de l'opéra et téléchargez à partir de là la dernière version opera_stable.

  1. Installez le dernier pilote d'opéra (si vous avez déjà installé un pilote d'opéra, vous devez d'abord le supprimer en utilisant sudo rm ...)

wget https://github.com/operasoftware/operachromiumdriver/releases/download/v.80.0.3987.100/operadriver_linux64.zip

   unzip operadriver_linux64.zip
   sudo mv operadriver /usr/bin/operadriver
   sudo chown root:root /usr/bin/operadriver
   sudo chmod +x /usr/bin/operadriver

dans mon cas, la dernière était 80.0.3987 comme vous pouvez le voir

  1. De plus, j'ai également installé chromedriver (mais comme je l'ai fait avant le test, je ne sais pas si cela est nécessaire) afin d'installer chromedriver, suivez les étapes de l'étape précédente: v

  2. Profitez et remerciez-moi!

Exemple de code sélénium

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Opera()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.quit()
Adrian Jimenez
la source
0

Il semble qu'il existe de nombreuses causes possibles à cette erreur. Dans notre cas, l'erreur s'est produite car nous avions les deux lignes de code suivantes:

System.setProperty("webdriver.chrome.driver", chromeDriverPath);
chromeOptions.setBinary(chromeDriverPath);

Il est résolu en supprimant la deuxième ligne.

shiuu
la source
semble l'exact opposé de @ sergiy-konoplyaniy fix ci-dessus: '(
Toby
Dans notre setBinary, nous avons essayé de définir le pilote chrome, ce qui semble une erreur. Le correctif de @ sergiy-konoplyaniy définit chrome.exe via setBinary.
shiuu
Où avez-vous ce code? Tout ce que j'ai est un fichier .side, et il ne contient pas de code C #.
pabrams
0

J'ai rencontré le même problème en exécutant Chrome via Behat / Mink et Selenium dans un conteneur Docker. Après quelques bidouilles, je suis arrivé au suivant behat.ymlqui fournit les interrupteurs mentionnés ci-dessus. Notez que tous étaient nécessaires pour que je puisse le faire fonctionner correctement.

default:
    extensions:
        Behat\MinkExtension:
            base_url: https://my.app/
            default_session: selenium2
            selenium2:
                browser: chrome
                capabilities:
                    extra_capabilities:
                        chromeOptions:
                            args:
                                - "headless"
                                - "no-sandbox"
                                - "disable-dev-shm-usage"
Chris
la source
0

Dans mon cas, je suis dans un environnement Kubernetes où je ne peux pas utiliser le TMPDIR par défaut car il remplira le répertoire temporaire avec des ordures.

J'utilisais donc ceci pour utiliser un autre tmpdir:

driver = new ChromeDriver(new ChromeDriverService.Builder()
                    .withEnvironment(ImmutableMap.of("TMPDIR", customTmpPath))
                    .build(), options);

Mais maintenant que j'ai tout mis à niveau vers la dernière version, cela ne semble plus fonctionner. J'aurai besoin de trouver une nouvelle façon de faire cela.

Nicolas DiPiazza
la source
0

Cela se produit lorsque chromedriver ne parvient pas à déterminer le port de débogage utilisé par chrome.

Une cause possible est un défaut ouvert avec HKEY_CURRENT_USER \ Software \ Policies \ Google \ Chrome \ UserDataDir

Mais dans mon dernier cas, c'était une autre cause non identifiée.

Heureusement, la définition du numéro de port a fonctionné manuellement:

final String[] args = { "--remote-debugging-port=9222" };
options.addArguments(args);
WebDriver driver = new ChromeDriver(options);
Radzimir
la source
2
Est-ce un port constant? Ou où puis-je le chercher?
Mike Shiyan le
0

Mauvais numéro de port dans mon cas. Vérifiez si le numéro de port lors du démarrage du serveur Selenium est le même que dans votre script.

Jaroslav Štreit
la source
-2

Je résous ce problème en installant yum -y install gtk3-devel gtk3-devel-docs", ça marche bien

Mon environnement de travail est:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

Avant:
entrez la description de l'image ici entrez la description de l'image ici

Après:
entrez la description de l'image ici entrez la description de l'image ici

何贤勇
la source
10
De l'avis: Veuillez ne pas publier de texte dans les images. MODIFIEZ votre réponse et remplacez ces images par du texte. Merci
sɐunıɔ ןɐ qɐp
1
Est-ce que cela résout le problème pour quelqu'un? Cela n'a pas résolu le problème pour moi
Bendram
-2

Comme il s'agit du message le plus actif pour ce type d'erreur, je voulais mentionner ma solution (après avoir passé des heures à résoudre ce problème).

Sur Ubuntu 18.04, en utilisant Chrome 70 et Chromedriver 2.44 et Python3, j'ai continué à recevoir la même erreur DevToolsActivePort, même lorsque j'ai désactivé toutes les options répertoriées ci-dessus. Le fichier journal chromedriver ainsi que ps montraient que le chromedriver que j'avais défini dans chrome_options.binary_location était en cours d'exécution, mais il donnait toujours une erreur DevToolsActivePort. Lorsque j'ai supprimé chrome_options.binary_location = '....' et que je l'ajoute à la création de webdriver, je le fais fonctionner correctement. webdriver.Chrome ('/ chemin vers ... / chromedriver', chrome_options = chrome_options)

Merci à tous pour vos commentaires qui m'ont permis de comprendre et de résoudre le problème.

Obrc
la source