Селен: укажите на сессию Chrome по умолчанию - PullRequest
7 голосов
/ 28 мая 2019

Хотя я понимаю, что это НЕ "хорошая" практика - у меня есть случай, когда мне нужно указать (подключить) драйвер 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, я не вижу куки в настройках Chrome, поэтому ясно, что он НЕ указывает на мой сеанс по умолчанию.Кроме того, я вижу, что каталог Selenium был создан (что, по-видимому, означает, что ему не удалось подключиться к сеансу в ~/Library/Caches/Google/Chrome/Default.

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

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

Ответы [ 2 ]

7 голосов
/ 01 июня 2019

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

enter image description here

Я использую окна, но это должнобыть похожим в вашем случае Mac тоже.

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

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

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

Ссылка:

http://chromedriver.chromium.org/capabilities

4 голосов
/ 01 июня 2019

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

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

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


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

  • browserнастройки
  • Расширения
  • Закладки
  • Приложения
  • Сохраненные пароли
  • История просмотра
  • и т. д.

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

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

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


Местоположение профиля 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.

Снимок:

DefaultChromeProfile

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 Profile в Selenium Webdriver Python 3

...