По этой проблеме много повторяющихся вопросов. Вот один из их , и совершенно очевидно, что селен не способен выполнить такую работу, поскольку он взаимодействует только со страницей chrome. Я раньше тоже сталкивался с этой проблемой, и вот мое решение. Это может выглядеть действительно непрофессионально, но, к счастью, это работает.
Лог c моего решения состоит в том, чтобы изменить настройку chrome, чтобы пропустить всплывающее окно и напрямую открыть нужное приложение. Однако команда Chrome удалила эту функцию в последней версии по некоторым причинам, и нам нужно вернуть ее вручную. Затем мы знаем, что каждый раз, когда селен начинает делать то, что он делает, он открывает новую страницу Chrome без каких-либо индивидуальных настроек, как и страница инкогнито. Поэтому нам нужно что-то сделать, чтобы позволить selenium открыть страницу Chrome с вашими индивидуальными настройками, чтобы мы могли убедиться, что всплывающее окно, которое мы вручную изменили на пропуск, можно успешно пропустить.
Введите следующий код в свой терминал.
defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true
Это позволяет вам изменить настройку пропуска всплывающих окон, которая является функцией Chrome команда удалена.
Перезапустите Chrome и откройте страницу масштабирования (или любое другое приложение), чтобы отобразить всплывающее окно. Если вы выполните 1-й шаг правильно, вы увидите, что рядом с «Open Zoom.us» отображается флажок, в котором говорится, что если вы отметите его, chrome откроет это приложение без запроса, то есть пропустить всплывающее окно для это приложение.
Теперь нам нужно позволить селену открывать Chrome с нашими индивидуальными настройками. Для этого наберите «chrome: // версия» во вкладке поиска вашего обычного Chrome (неавтоматизированная страница, открытая селеном). Go в «Путь к профилю» и скопируйте этот путь без последнего слова «по умолчанию». Например:
/Users/MYNAME/Library/Application Support/Google/Chrome/Default
Это мой путь к профилю, но я копирую только все, кроме последнего слова Default, так что это то, что мне нужно скопировать.
/Users/MYNAME/Library/Application Support/Google/Chrome/
Это для Ma c пользователей, но для Windows отличается только путь (начинается с C: // или что-то в этом роде), шаги такие же.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
option = Options()
option.add_argument('THE PATH YOU JUST COPIED')
driver = webdriver.Chrome(executable_path='YOUR PATH TO CHROMEDRIVER', options=option)
driver.get("google.com") #Or anything else
Мы используем «параметры», позволяющие селену открывать страницу с нашим настроенным профилем. Теперь вы увидите, что Selenium открывает страницу Chrome со всем профилем вашей учетной записи, настройками, и она выглядит как обычная страница chrome.
Запустите свой код. Но перед этим не забудьте закрыть ВСЕ CHROME сессий вручную. Для Ma c убедитесь, что под значком Chrome нет точки, указывающей на то, что Chrome не работает ни при каких обстоятельствах. ЭТОТ ШАГ КРИТИЧЕСКИЙ, иначе селен откроет страницу chrome и просто остановится на ней.
Вот все шаги. Опять же, это решение является совершенно неформальным, и я лично не думаю, что это «решение» этой проблемы. Я постараюсь придумать лучший способ добиться этого в будущем. Но я все же разместил это как альтернативу просто потому, что думаю, это может быть в некоторой степени полезно для кого-то вроде меня. Надеюсь, это сработает для вас, и удачи.