Использование selenium для обработки окна подтверждения веб-магазина Chrome в Python

#python #selenium #webdriver

Вопрос:

Я пытаюсь написать скрипт, который устанавливает расширение OneLogin, потому что OneLogin требуется для посещения веб-сайта.

Я могу заставить selenium ввести имя пользователя и пароль для завершения самого входа в систему, но мне все равно нужно расширение для доступа к сайту, иначе учетные данные не будут загружены. Я попытался преобразовать мой текущий установленный плагин в файл .crx и разрешить веб-драйверу импортировать при запуске, но он не работает. Браузер по-прежнему каждый раз спрашивает меня, хочу ли я установить расширение OneLogin. Вот как я загружаю расширение, если вам интересно.

 # load extension
# extension='.../3.4.46_0.crx'
# options = webdriver.ChromeOptions()
# options.add_extension(extension)
 

Поэтому я использую другой вариант, который заключается в установке плагина каждый раз, когда я создаю экземпляр webdriver. При таком подходе я столкнулся с одной проблемой. Например, когда вы пытаетесь установить расширение (любое расширение подойдет), всплывающее окно с запросом «Добавить X?» «Это может……», а затем вам предоставляется возможность «отменить» и «Добавить расширение».
Пример окна

У меня возникли проблемы с тем, как нажать кнопку «Добавить расширение». Я не могу проверить элемент, он ничего не делает. Старый элемент не будет работать, потому что он находится в другом месте. Я пробовал подход «оповещение о захвате», но он не удался. Я подозреваю, что это работает, если это часть html, но информация о новом всплывающем окне не закодирована на странице загрузки, вероятно, за javascript.

Я пытался использовать фреймворк робота, но, похоже, он работает только для версии Java. Также кажется, что селен не позволяет вам просто щелкнуть по координате (x,y). Так что же мне теперь делать?

Ответ №1:

Я совершил простую ошибку, запустив веб-драйвер перед загрузкой параметров. Теперь chrome предварительно загружается с плагином при запуске.

 # load extension
extension='/Users/wang.shuochen/Library/Application Support/Google/Chrome/Default/Extensions/ioalpmibngobedobkmbhgmadaphocjdn/3.4.46_0.crx'
options = webdriver.ChromeOptions()
options.add_extension(extension)
driver = webdriver.Chrome(executable_path="/Users/wang.shuochen/Downloads/chromedriver", options=options)