Запуск Selenium-тестів в браузері Opera - Selenium - автоматизація веб-додатків

{Tortags, 133,1}   Існує дві принципово різні версії браузера Opera, побудовані на різних движках:   Стара Opera (версії до 12), що використовує оригінальний движок Presto, розроблений компанією Opera Software,   Нова Opera (версії 15 і більше), побудована на основі браузера Chromium, тобто використовує движок Blink

{Tortags, 133,1}

Існує дві принципово різні версії браузера Opera, побудовані на різних движках:

  • "Стара" Opera (версії до 12), що використовує оригінальний движок Presto, розроблений компанією Opera Software,
  • "Нова" Opera (версії 15 і більше), побудована на основі браузера Chromium, тобто використовує движок Blink.

Відповідно, і для запуску Selenium-тестів в цих різних версіях використовуються абсолютно різні механізми.

Малоймовірно, що комусь зараз ще потрібно тестувати веб-додатки в старих версіях браузера Opera, тому в цій статті описується тільки спосіб запуску тестів в нових версіях Opera.

Оскільки нова Opera фактично є надбудовою над браузером Chromium, було б логічно припустити, що для запуску тестів можна використовувати утиліту chromedriver і інтерфейсний клас ChromeDriver.

Єдине ускладнення, яке виникає - це нездатність драйвера автоматично визначити розташування виконуваного файлу браузера, оскільки драйвер націлений на пошук файлу браузера Chrome.

Але ж можна явно вказати шлях до виконуваного файлу при ініціалізації драйвера:

ChromeOptions options = new ChromeOptions ();
options.setBinary ( "c: \\ Program Files (x86) \\ Opera \\ 29.0.1795.47 \\ opera.exe");
ChromeDriver driver = new ChromeDriver (options);

На жаль, незважаючи на те, що браузер запускається - драйвер не може ним керувати, ініціалізація завершується з виключенням ...

Причина, ймовірно, в тому, що з деяких пір в chromedriver додана функція контролю версій - драйвер відмовляється працювати з будь-якими версіями браузера, крім "офіційно підтримуваних". У тому числі під роздачу потрапили Opera, Yandex-браузер і інші надбудови над Chromium - драйвер відкидає їх як несумісні.

На щастя, розробники Opera випустили альтернативну версію цієї допоміжної утиліти, яка називається, як нескладно здогадатися, operadriver.

Завантажити її можна звідси: https://github.com/operasoftware/operachromiumdriver/releases

Вибираєте архів, що відповідає вашій платформі і битности браузера, завантажуєте, розпаковуєте - всередині знаходиться один єдиний виконуваний файл, він щось нам і потрібен.

Тепер при ініціалізації ChromeDriver замість шляху до браузеру потрібно вказати шлях до цієї утиліті, витягнутої з завантаженого архіву (а браузер вона вже сама знайде, якщо він встановлений в стандартне місце):

ChromeDriverService service = new ChromeDriverService.Builder ()
.usingDriverExecutable (new File ( "C: \\ Tools \\ operadriver.exe")). build ();
ChromeDriver driver = new ChromeDriver (service);
driver.get ( "http://selenium2.ru/");
driver.quit ();

І щоб ще трохи скоротити кількість коду, в Selenium починаючи з версії 2.45 доданий новий інтерфейсний клас OperaDriver, який сам вміє знаходити виконуваний файл operadriver, так що запуск Opera стає таким же простим, як запуск будь-якого іншого браузера:

OperaDriver driver = new OperaDriver ();
driver.get ( "http://selenium2.ru/");
driver.quit ();

Правда, для цього потрібно виконуваний файл operadriver помістити в яку-небудь директорію, де операційна система зможе його знайти, тобто в будь-яку директорію, згадану в змінній оточення PATH. Користувачі операційної системи Windows можуть покласти цей файл, наприклад, в директорію C: \ windows \ system32

І ще будьте уважні - новий OperaDriver знаходиться в пакеті org.openqa.selenium.opera, а є ще старий клас з такою ж назвою, який знаходиться в пакеті com.opera.core.systems, він призначений для роботи зі "старої" Opera , побудованої на движку Presto.