Selenium: укажите на сессию Chrome по умолчанию

Хотя я понимаю, что это НЕ "хорошая" практика - у меня есть случай, когда мне нужно указать (подключить) драйвер 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 версии 74.0.3729.6 (которая является совместимой версией).

Когда открывается Chrome, я не вижу куки в настройках Chrome, поэтому ясно, что он НЕ указывает на мой сеанс по умолчанию. Кроме того, я вижу, что Selenium каталог был создан (что означает, что он не смог подключиться к сеансу в ~/Library/Caches/Google/Chrome/Default,

Как подключить селен к сеансу Chrome по умолчанию? Это тот же сеанс, который вы видите, когда обычно открываете Chrome.

Я посмотрел на этот другой вопрос, но в ответе не говорится, как указать Selenium на сессию по умолчанию. Кроме того - это устаревший вопрос - с тех пор Chrome и Chromedriver значительно продвинулись вперед. Кроме того, этот вопрос предполагает, что постер может подключиться к сеансу по умолчанию - я не могу этого сделать, что говорит о том, что с тех пор Chromedriver / Chrome изменились. Также этот вопрос для Windows - я на Mac, где все работает по-другому.

2 ответа

Убедитесь, что вы указываете на нужную папку, используя "Chrome:// версия".

Я использую Windows, но она должна быть похожа и на ваш Mac.

Обратитесь к этой ссылке для получения дополнительной информации.

Как создать собственный профиль:

Вы можете создать свой собственный профиль, просто запустив Chrome (в командной строке или через ChromeDriver) с переключателем user-data-dir, установленным в какой-то новый каталог. Если путь не существует, Chrome создаст новый профиль в указанном месте. Затем вы можете изменить настройки профиля по своему усмотрению, и ChromeDriver может использовать профиль в будущем. Откройте chrome://version в браузере, чтобы узнать, какой профиль использует Chrome.

Ссылка:

http://chromedriver.chromium.org/capabilities

Начнем с того, Нет, вы не можете указать (подключить) драйвер Selenium к любому из существующих / предыдущих сеансов просмотра веб-страниц. Даже если вы сможете извлечь идентификатор сеанса, файлы cookie и другие атрибуты сеанса из существующего / предыдущего сеанса просмотра веб-страниц, вы все равно не сможете передать эти атрибуты как HOOK в WebDriver.

Вы можете найти подробное обсуждение в Как я могу подключиться к браузеру, открытому веб-драйвером с селеном?

Но, грубо говоря, вы можете подключиться к существующему профилю Chrome по умолчанию.


Похоже, вы уже знаете, что попытка использовать профиль Chrome по умолчанию для автоматизации тестирования будет противоречить всем рекомендациям, поскольку профиль Chrome по умолчанию может содержать одно из следующих:

  • настройки браузера
  • расширения
  • закладки
  • Программы
  • Сохраненные пароли
  • История браузера
  • так далее

Таким образом, профиль Chrome по умолчанию может не соответствовать вашей спецификации тестирования и может иногда вызывать исключение при попытке загрузки. Следовательно, вы всегда должны использовать настроенный профиль Chrome.

Подробное обсуждение можно найти в разделе Как открыть профиль Chrome с помощью аргумента --user-data-dir в Selenium.

Если ваш вариант использования по-прежнему гарантирует использование профиля Chrome по умолчанию, вам необходимо следовать приведенным ниже сведениям.


Расположение профиля Chrome по умолчанию

В соответствии с документацией " Как найти папку профиля Chrome" в Windows, Mac и Linux расположение папки профиля Chrome по умолчанию отличается в зависимости от вашей платформы. Места:

  • Windows 7, 8.1 и 10: C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
  • Mac OS X El Capitan: Users/<username>/Library/Application Support/Google/Chrome/Default
  • Linux: /home/<username>/.config/google-chrome/default

Вам нужно заменить <username> с именем вашей пользовательской папки. Папка профиля по умолчанию называется просто 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 в OS X или в файловый менеджер, такой как Nautilus в Linux, чтобы получить доступ к этой папке.


Пример кода (Windows 10)

Наконец, для доступа к профилю Chrome по умолчанию вы можете использовать следующее решение на основе Python:

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")

Подробное обсуждение можно найти в разделе Как использовать профиль Chrome в Selenium Webdriver Python 3.

Другие вопросы по тегам