web-dev-qa-db-fra.com

InvalidargumentException: Message: argument non valide: le répertoire de données utilisateur est déjà utilisé lors de l'utilisation de l'erreur à l'aide de --User-Data-Dir pour démarrer Chrome à l'aide de sélénium

Quand j'essaie d'utiliser --user-data-dir Pour l'utilisateur actuel de démarrer Chrome à l'aide de sélénium, je reçois une erreur comme suit:

  File "C:\Program Files (x86)\Python\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Program Files (x86)\Python\lib\site-packages\Selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir

Comment puis-je corriger cette erreur?

4
Jackson

Ce message d'erreur ...

Selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir

... implique que le chromedriver n'a pas pu initialiser le nouveau Navigateur Chrome Session à l'aide de la spécifiée user data directory Comme il était déjà utilisé.

Cette erreur peut être reproduite comme suit:

  • Bloc de code:

    from Selenium import webdriver
    import getpass
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument(r"--user-data-dir=C:\Users\{}\AppData\Local\Google\Chrome\User Data".format(getpass.getuser()))
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get("https://www.google.com/")
    
  • Terminez la traçabilité pertinente:

    [12148:21412:0204/035557.731:ERROR:cache_util_win.cc(21)] Unable to move the cache: Access is denied. (0x5)
    [12148:21412:0204/035557.731:ERROR:cache_util.cc(141)] Unable to move cache folder C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\ShaderCache\GPUCache to C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\ShaderCache\old_GPUCache_000
    [12148:21412:0204/035557.731:ERROR:disk_cache.cc(178)] Unable to create cache
    [12148:21412:0204/035557.731:ERROR:shader_disk_cache.cc(605)] Shader Cache Creation failed: -2
    Opening in existing browser session.
    Traceback (most recent call last):
      File "C:\Users\Soma Bhattacharjee\Desktop\Debanjan\PyPrograms\yandex_ru.py", line 18, in <module>
        driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
      File "C:\Python\lib\site-packages\Selenium\webdriver\chrome\webdriver.py", line 81, in __init__
        desired_capabilities=desired_capabilities)
      File "C:\Python\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 157, in __init__
        self.start_session(capabilities, browser_profile)
      File "C:\Python\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 252, in start_session
        response = self.execute(Command.NEW_SESSION, parameters)
      File "C:\Python\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 321, in execute
        self.error_handler.check_response(response)
      File "C:\Python\lib\site-packages\Selenium\webdriver\remote\errorhandler.py", line 242, in check_response
        raise exception_class(message, screen, stacktrace)
    Selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir
    

Une analyse

La trace d'erreur d'erreur se plaint clairement de Access est refus car le programme n'a pas pu déplacer le dossier de cache ..\ShaderCache\GPUCache à ..\ShaderCache\old_GPUCache_000. D'où la création de cache Échec de la création et de la création ultérieure de Shader Cache Création Échec. Bien que ces problèmes soulève le InvalidArgumentException _ mais capable de pouvoir ouvrir une nouvelle fenêtre dans la session existante Séance de navigateur chromé.

Bien que l'erreur soit lancée, le nouveau Chrome fenêtre est initié mais reste attaché avec la session déjà ouverte chrome, mais la nouvelle fenêtre ne peut être contrôlée par le - webdiver instance. Par conséquent, vous voyez data:, Dans la barre d'URL.


Solution

Vous devez prendre soin de quelques points:

  • Si vous utilisez le Par défaut Chrome Pour accéder aux pages Web pour votre autre travail sur le même Machine de test, vous ne devez pas définir user-data-dir comme le utilisateur utilisateur car il reste verrouillé par l'autre Chrome processus que vous avez initié manuellement.
  • Si vous exécutez vos tests dans un système isolé Système de test, vous pouvez définir user-data-dir AS ..\Data utilisateur\par défaut Pour accéder à Par défaut Chrome Voir le profil .
  • Toutefois, selon les meilleures pratiques, vous devez toujours créer un nouveau Profil Chrome pour exécuter vos tests en tant que par défaut Chrome profil peut contenir Extensions, Signets, Historique de navigation, etc., et peut ne pas charger correctement.]
3
DebanjanB

Le correctif le plus simple et le plus facile est; Pour effacer l'ouverture existante chrome pilote: Voici les étapes: Tapez le gestionnaire de tâches à la recherche Spotlight/dans la fenêtre de recherche dans la barre des tâches ou en utilisant d'autres moyens d'accéder au gestionnaire de tâches. Quand la tâche Manager Wizard/Wizard apparaît, recherchez ChromeDriver, cliquez avec le bouton droit de la souris, puis cliquez dessus, puis cliquez sur "Tâche finale". Ce n'est pas un correctif éternel. Une fois que vous avez ouvert chrome Browser plusieurs fois, vous avez obtenu Pour faire la même étape, évitez le problème. J'espère que cela vous aidera à la recherche d'une solution stable.

1
Tes

AS TES Réponse mentionné, j'ai ouvert le gestionnaire de tâches Windows et j'ai fermé tous les processus chrome.exe et chromedriver.exe et cela a fonctionné !!!

J'ai utilisé ces configurations pour ouvrir Google Chrome à l'aide de mon Chrome:

options = webdriver.ChromeOptions()
    options.add_argument('user-data-dir=C:\\Users\\my_user\\AppData\\Local\\Google\\Chrome\\User Data')
    driver = webdriver.Chrome(executable_path='./chromedriver.exe', options=options)
0
Stévillis