Запуск Selenium WebDriver с использованием Python с расширениями (файлы .crx)
я пошел вЗагрузчик Chrome Extension поймать файл .crx для 'Adblock-Plus_v1.4.1'.
Я бросил его в каталог, в котором я работаю, а затем побежал:
from selenium import webdriver
chop = webdriver.ChromeOptions()
chop.add_extension('Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)
Это полностью признает, что это существует, но это дает мне то, что выглядит какChromeDriver.exe
сообщение о стиле:
ERROR:extension_error_reporter.cc(56)] Extension error: Package is invalid: 'CRX_PUBLIC_KEY_INVALID'.
Затем в конечном итоге исключение веб-драйвера:
selenium.common.exceptions.WebDriverException: Message: u'Extension could not be installed'
Я почти на 100% уверен, что в моем коде нет ничего плохого, потому что он сначала помещает сообщение типа ChromeDriver, а затем выдает исключение.
Я также попытался упаковать это сам, зайдя в'C:\Documents and Settings\\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions'
наchrome://extensions/
при включенном режиме разработчика попытался использовать созданный файл .crx и получил точно такое же сообщение об ошибке
Я также попробовал другой способ:
chop = webdriver.ChromeOptions()
chop.add_argument('--load_extension=Adblock-Plus_v1.4.1.crx')
driver = webdriver.Chrome(chrome_options = chop)
это не вызывает исключение или даже ошибку драйвера Chrome, но если я вручную перейду кchrome://extensions/
это не говорит о том, что расширение загружено ...
Я думаю, что моя проблема связана с самим файлом .crx. из-за характера сообщения об ошибке ... но в то же время, я не уверен, потому что, если я порождаюwebdriver.Chrome()
сеанс, а затем вручную перейти кchrome://extensions/
Я могу физически перетащить и установить тот же файл .crx.
Редактировать: я понял, что на самом деле не задавал вопрос, так что вот оно:
Что я делаю неправильно? Почему я не могу загрузить это расширение Chrome? Это мой код или сам файл .crx?
ОБНОВЛЕНИЕ: @Pat Meeker Я попробовал это, но я теряю что-то в переводе с Java на Python
capability = webdriver.DesiredCapabilities.CHROME
возвращает словарь, содержащий все мои аргументы вi
Я уверен, что единственная часть, которую мне нужно сделать, это добавить аргументы.
options = webdriver.ChromeOptions()
options.add_argument('--user-data-dir=C:/Users/USER_NAME/AppData/Local/Google/Chrome/User Data/Default/')
Это то, что у меня есть сейчас, и всякий раз, когда я пытаюсьdriver = webdriver.Chrome(chrome_options=options)
chrome открывается, и кажется, что он помнит свою прежнюю позицию, но НИЧЕГО больше, нет закладок, нет расширений, нет ничего.