Это сообщение об ошибке ...
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 не смог инициировать новый сеанс Chrome Browser с помощью указано user data directory
как оно уже использовалось.
Эта ошибка может быть воспроизведена следующим образом:
Блок кода:
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
. следовательно, создание кеша не удалось, и впоследствии создание Shader Cache Creation не удалось. Хотя эти проблемы поднимают InvalidArgumentException
, но принудительно открывают новое окно в существующем Chrome сеансе браузера .
Хотя выдается ошибка, все равно новое окно Chrome инициируется, но остается подключенным к уже открытому сеансу Chrome, но новое окно не может управляться экземпляром WebDriver . Следовательно, вы видите data:,
в строке URL.
Решение
Вам необходимо позаботиться о нескольких вещах:
- Если вы используя Профиль по умолчанию Chrome Профиль для доступа к веб-страницам для вашей другой работы на том же Тестовом компьютере , вы не должны устанавливать
user-data-dir
как Данные пользователя , поскольку они остаются заблокированными другим процессом Chrome, который вы инициировали вручную. - Если вы выполняете свои тесты в изолированной тестовой системе , вы можете установить
user-data-dir
как . . \ Данные пользователя \ По умолчанию для доступа к По умолчанию Chrome Профиль . - Однако, в соответствии с лучшими практиками, вы всегда должны создавать новый Chrome Профиль , чтобы выполнять свои тесты как По умолчанию Chrome Профиль может содержать Расширения , Закладки , История просмотра , et c и могут загружаться неправильно.