Python webdriver manager is comming
Хей-хей! В преддверии Нового года и праздников решил написать о своей наработке.
Уходящий год для меня стал годом перемен не только благодаря тому, что я переехал в другой город, но и потому, что углубился в мир Python.
В самостоятельном обучении чему-либо я предпочитаю такой подход: читать книги хорошо, но нужно что-то делать ручками. Пару месяцев назад я уже выкладывал свою поделку testcontainers-py
Сейчас же я просто решил написать аналог java webdriver для Python. Возможно, в интернете уже есть реализация, но я не нашел.
Идея полностью соответсвует реализации на Java - автоматизировать менеджмент бинарных файлов для различных драйверов.
Код доступен в Github
Как пользоваться?
Установить зависимость:
pip install webdriver_manager
Использовать драйвер-менеджер для нужного вам драйвера:
from webdriver_manager.chrome import ChromeDriverManager
webdriver.Chrome(executable_path=ChromeDriverManager().install())
В такой конфигурации будет скачана самая последняя версия Хром драйвера для вашей OС. Если вы хотите зафиксировать версию, вы можете сделать это достаточно просто: передав версию, как параметр в конструктор DriverManager:
webdriver.Chrome(executable_path=ChromeDriverManager("2.26").install())
То же самое валидно и в случае Firefox:
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
Проблема может заключаться только в одном - все драйверы для firefox релизятся на Github, вся работа
с которым идет через Github API. Если часто делать запросы в api
как не authorized
пользователь, то
вы можете получить ошибку github rate limit reached. В таком случае вам нужно добавить
access_token
:
driver = webdriver.Firefox(executable_path=GeckoDriverManager().use_token("adasdasdsads342").install())
Лично я использую для своей работы Сhrome и Firefox, поэтому на данный момент реализована поддержка только этих браузеров. В будущем планирую добавить работу с другими драйверами.