Запуск Selenium-тестов в браузере Opera
Существует две принципиально разные версии браузера Opera, построенные на разных движках:
- “старая” Opera (версии до 12), использующая оригинальный движок Presto, разработанный компанией Opera Software,
- “новая” Opera (версии 15 и больше), построенная на основе браузера Chromium, то есть использующая движок Blink.
Соответственно, и для запуска Selenium-тестов в этих разных версиях используются совершенно разные механизмы.
Маловероятно, что кому-то сейчас ещё требуется тестировать веб-приложения в старых версиях браузера Opera, поэтому в этой статье описывается только способ запуска тестов в новых версиях Opera.
Поскольку новая Opera фактически является надстройкой над браузером Chromium, было бы логично предположить, что для запуска тестов можно использовать утилиту chromedriver и интерфейсный класс ChromeDriver.
Единственное затруднение, которое возникает – это неспособность драйвера автоматически определить расположение исполняемого файла браузера, поскольку драйвер нацелен на поиск исполняемого файла браузера Chrome.
Но ведь можно явно указать путь к исполняемому файлу при инициализации драйвера:
Увы, несмотря на то, что браузер запускается – драйвер не может им управлять, инициализация завершается с исключением…
Причина, вероятно, в том, что с некоторых пор в chromedriver добавлена функция контроля версий – драйвер отказывается работать с любыми версиями браузера, кроме “официально поддерживаемых”. В том числе под раздачу попали Opera, Yandex-браузер и прочие надстройки над Chromium – драйвер отвергает их как несовместимые.
К счастью, разработчики Opera выпустили альтернативную версию этой вспомогательной утилиты, которая называется, как несложно догадаться, operadriver.
Скачать её можно отсюда: https://github.com/operasoftware/operachromiumdriver/releases
Выбираете архив, соответствующий вашей платформе и битности браузера, загружаете, распаковываете – внутри находится один единственный исполняемый файл, он-то нам и нужен.
Теперь при инициализации ChromeDriver вместо пути к браузеру нужно указать путь к этой утилите, извлечённой из загруженного архива (а браузер она уже сама найдёт, если он установлен в стандартное место):
И чтобы ещё немного сократить количество кода, в Selenium начиная с версии 2.45 добавлен новый интерфейсный класс OperaDriver, который сам умеет находить исполняемый файл operadriver, так что запуск Opera становится таким же простым, как запуск любого другого браузера:
Правда, для этого нужно исполняемый файл operadriver поместить в какую-нибудь директорию, где операционная система сможет его найти, то есть в любую директорию, упомянутую в переменной окружения PATH. Пользователи операционной системы Windows могут положить этот файл, например, в директорию C:\windows\system32
И ещё будьте внимательны – новый OperaDriver
находится в пакете org.openqa.selenium.opera
, а есть ещё старый класс с таким же названием, который находится в пакете com.opera.core.systems
, он предназначен для работы со “старой” Opera, построенной на движке Presto.