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, поэтому на данный момент реализована поддержка только этих браузеров. В будущем планирую добавить работу с другими драйверами.