web-dev-qa-db-ja.com

InvalidArgumentException:メッセージ:無効な引数:ユーザーデータディレクトリは既に使用中です--user-data-dirを使用して開始Chrome Seleniumを使用)

現在のユーザーが--user-data-dirを使用して開始しようとすると、Chrome Seleniumを使用して次のようなエラーが発生します。

  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

このエラーを修正するにはどうすればよいですか?

1
Jackson

このエラーメッセージ...

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

...すでに ChromeDriver が指定されたuser data directoryを使用して新しい Chrome Browser セッションを開始できなかったことを意味します使用中で。

このエラーは次のように再現できます。

  • コードブロック:

    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/")
    
  • 関連するトレースバックを完了します。

    [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
    

分析

エラースタックトレースは、プログラムがキャッシュフォルダー..\ShaderCache\GPUCache..\ShaderCache\old_GPUCache_000に移動できなかったため、アクセスが拒否されたと明らかに不平を言っています。したがって、cacheの作成に失敗し、その後Shader Cache Creationの作成に失敗しました。これらの問題によりInvalidArgumentExceptionが発生しますが、既存の Chromeブラウザセッション内で新しいウィンドウを強制的に開くことができます。

エラーがスローされても、新しいChromeウィンドウが開始されますが、すでに開いている Chrome セッションに接続されたままですが、新しいウィンドウは WebDriver インスタンス。したがって、URLバーにdata:,が表示されます。


解決

次の2つの点に注意する必要があります。

  • デフォルトChromeプロファイルを使用して、同じテストマシンで他の作業のWebページにアクセスする場合は、 user-data-dirUser Dataとして設定しないでください手動で開始した他のChromeプロセスによってロックされたままです。
  • 分離された test system でテストを実行している場合、user-data-dirを次のように設定できます..\User Data\Default Default Chrome Profile 。[にアクセスします.____。]
  • ただし、ベストプラクティスに従って、新しい Chromeプロファイルを常に作成して、 Default Chrome Profile としてテストを実行する必要があります。 Extensions Bookmarks Browsing History などが含まれる場合があり、正しく読み込まれない場合があります。
3
DebanjanB

最も簡単で簡単な修正は次のとおりです。既存の開かれたchromeドライバーをクリアするには:手順は次のとおりです:タスクバーのSpotlight検索/検索ウィンドウでタスクマネージャーに入力するか、タスクマネージャーにアクセスする他の方法を使用します。タスクがマネージャーウィザード/ウィンドウがポップアップ表示され、chromedriverを検索して右クリックし、[タスクの終了]をクリックします。それだけです。これは永遠の解決策ではありません。chromeブラウザを複数回開くと、同じステップを実行して問題を回避します。安定した修正を探しているときに、これが役立つことを願っています。

1
Tes

Tesの回答 で述べたように、Windowsタスクマネージャーを開いて、chrome.exeとchromedriver.exeのすべてのプロセスを閉じたところ、動作しました!!!

これらの設定を使用してGoogleを開きましたChrome using my Chrome Profile:

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