Хотя я понимаю, что это НЕ "хорошая" практика - у меня есть вариант использования, когда мне нужно указать (подключить) драйвер Selenium к моему сеансу/профилю Chrome по умолчанию.
Мой профиль по умолчанию здесь:
~/Library/Caches/Google/Chrome/Default
Вот как я это настраиваю сейчас: (не работает)
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=~/Library/Caches/Google/Chrome")
options.add_argument("--profile-directory=Default")
browser = webdriver.Chrome(options=options, executable_path=r"./chromedriver")
browser.get("http://google.com")
Я использую версию Chrome 74.0.3729.169 и версию ChromeDriver ChromeDriver 74.0.3729.6 (которая является совместимой версией).
Когда Chrome открывается, я не вижу никаких файлов cookie в настройках Chrome, поэтому ясно, что он НЕ указывает на мой сеанс по умолчанию. Кроме того, я вижу, что был создан каталог Selenium
(что, по-видимому, означает, что ему не удалось подключиться к сеансу в ~/Library/Caches/Google/Chrome/Default
.
Как подключить селен к моему сеансу Chrome по умолчанию? Это тот же сеанс, который можно увидеть при обычном открытии Chrome.
Я просмотрел этот другой вопрос, но в ответе не указано, как указать Selenium на сеанс по умолчанию. Кроме того, это устаревший вопрос - с тех пор Chrome и Chromedriver значительно продвинулись вперед. Кроме того, вопрос предполагает, что плакат может подключиться к сеансу по умолчанию - я не могу сделать то, что предполагает, что Chromedriver/Chrome с тех пор изменились. Также этот вопрос для Windows - я на Mac, где все работает по-другому.
Проблема заключалась в том, что я не упомянул chrome://version
, что показало, что истинный путь был на самом деле ~/Library/Application Support/Google/Chrome/
@etayluz, да, вы указали неправильный путь для «Путь к профилю».
Для начала, Нет, вы не можете указать (подключить) драйвер Selenium ни к одному из существующих/предыдущих Просмотр веб-страницсеанс. Даже если вы можете извлечь Идентификатор сессии, Печенье и другие атрибуты сеанса из существующего/предыдущего сеанса Просмотр веб-страниц, вы все равно не сможете передать эти атрибуты в качестве HOOK в Вебдрайвер.
You can find a detailed discussion in How can I reconnect to the browser opened by webdriver with selenium?
Но грубо вы можете подключиться к существующему Профиль Chrome по умолчанию.
Кажется, вы уже знаете, что попытка использовать По умолчаниюПрофиль Chrome для Автоматизация тестирования будет противоречить всем лучшие практики, поскольку Профиль Chrome по умолчанию может содержать одно или все из следующего:
Таким образом, По умолчаниюПрофиль Chrome может не соответствовать вашему Спецификация испытаний и может иногда вызывать исключение при попытке загрузки. Следовательно, вы всегда должны использовать индивидуальныеПрофиль Chrome.
You can find a detailed discussion in How to open a Chrome Profile through --user-data-dir argument of Selenium
Если ваш вариант использования по-прежнему гарантирует использование По умолчаниюПрофиль Chrome, вам необходимо следовать указанным ниже деталям.
Согласно документации в Как найти папку профиля Chrome в Windows, Mac и Linux, расположение папки профиля Chrome по умолчанию зависит от вашей платформы. Места:
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
Users/<username>/Library/Application Support/Google/Chrome/Default
/home/<username>/.config/google-chrome/default
Вам нужно заменить <username>
на имя вашей пользовательской папки. Папка профиля по умолчанию называется просто Default (или default в Linux). Однако, если вы создали дополнительные профили, имена их папок не так очевидны. Имя, которое вы присвоили профилю при его создании, отображается на кнопке имени в правой части строки заголовка в окне Chrome. К сожалению, имя, которое Chrome использует для связанной папки профиля, является общим пронумерованным именем, например Profile 3
.
Если вам нужно узнать какое-либо имя папки Профиль Chrome, вам просто нужно получить доступ к chrome://version
в адресной строке и нажать Enter.
Снимок:
Profile Path
показывает местоположение текущего профиля. Например, местоположение моего профиля По умолчанию в моей системе Windows 10 — C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default
. Вы можете выбрать путь, скопировать его и вставить в Проводник в Windows, Finder на ОС Х или в файловый менеджер, например Наутилус в Linux, чтобы получить доступ к этой папке.
Наконец, для доступа к Профиль Chrome по умолчанию вы можете использовать следующее решение на основе питон:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\\Users\\Soma Bhattacharjee\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe', chrome_options=options)
driver.get("https://www.google.co.in")
You can find a detailed discussion in How to use Chrome Profile in Selenium Webdriver Python 3
Убедитесь, что вы указываете на нужную папку, используя «Chrome: // версия».
Я использую Windows, но это должно быть похоже и на ваш Mac.
См. эта ссылка для получения дополнительной информации.
Как создать пользовательский профиль:
Вы можете создать свой собственный профиль, просто запустив Chrome (из командной строки или через ChromeDriver) с переключателем user-data-dir, установленным в какой-либо новый каталог. Если путь не существует, Chrome создаст новый профиль в указанном месте. Затем вы можете изменить настройки профиля по своему усмотрению, и ChromeDriver сможет использовать профиль в будущем.. Откройте chrome://version в браузере, чтобы увидеть, какой профиль использует Chrome.
Ссылка:
Это всего лишь предположение, но вы, вероятно, захотите удалить тильду и использовать полный путь (включая каталог по умолчанию). Кроме того, в документация упоминается использование URL-адреса chrome://version, чтобы увидеть, что на самом деле использует Chrome.