После обновления Chrome перестал работать ChromeDriver
Недавно браузер Chrome (канал release) обновился до версии 29, и после этого появилось много жалоб на то, что тесты перестали работать, Selenium запускает браузер, но ничего не может в нём выполнить.
Что случилось и как это исправить?
Начну с ответа на второй вопрос. Нужно скачать версию chromedriver 2.2 или более новую и использовать её вместо той, которая была у вас раньше. Правда, при этом у вас могут появиться какие-нибудь ошибки (про это чуть ниже), но в целом работоспособность тестов должна восстановиться.
А теперь подробно и по порядку, что же произошло.
Примерно год тому назад команда Chromium остановила разработку chromedriver1 и приступила к разработке chromedriver2. Да, драйвер для браузера Chrome разрабатывается не в рамках проекта Selenium, а непосредственно той же командой, которая делает браузер. Если первая версия основывалась на использовании “неофициального” внутреннего интерфейса автоматизации, то вторая должна была базироваться на “официальных” открытых интерфейсах Chrome DevTools. Полгода назад появилась первая бета-версия новой реализации, а в начале июня 2013 года была выпущена стабильная релизная версия, получившая номер chromedriver 2.0. Сейчас, на момент написания этой заметки, вышла версия chromedriver 2.3 – исправляются баги, которые несмотря на “стабильный” статус всё таки ещё имеются.
Но несмотря на появление новой реализации chromedriver2 старая тоже продолжала работать. Пока разработчики браузера не решили, что пришло время удалить старый интерфейс автоматизации. И удалили. Это случилось в версии 29.
Увы, для команды разработчиков Selenium, это тоже стало неприятным сюрпризом. Внезапно появилось много жалоб в мейл-листе, пользователи стали регистрировать однотипные баги в трекере “у меня сломался ChromeDriver”. К счастью, удалось быстро найти причину и “свалить все грехи” на разработчиков браузера :)
В общем, сейчас вам нужно либо не допустить обновления браузера до версии 29, либо переходить на версию chromedriver 2.2.
Теоретически, конечно, правильнее обновиться и тестировать в Chrome 29, потому что именно эта версия сейчас стоит у большинства пользователей (Chrome обновляется автоматически). Но тут вас могут подстерегать неожиданные проблемы, потому что тестовый стенд Selenium тоже до самого последнего времени был настроен на использование старой реализации chromedriver1, и после перехода на chromedrver 2.2 мы увидели, что многие тесты сбоят.
В общем, ситуация неприятная – и назад пути нет, и вперёд идти небезопасно. Будем надеяться, что команда разработчиков Chromium сможет быстро доисправлять все известные на данный момент проблемы. Ну а если что – жалуйтесь, пишите баги.