Тестирование webview, Android. Посоветуйте инструмент

Подскажите пожалуйста, реально ли тестировать webview на Android?

Команда разрабатывает “рисовалку” для Android-доски, которая позволит рисовать в браузере. Суть состоит в том, что пользователь обводит необходимые участки (например кнопку “Логин”) какой-то фигурой, после скрола вверх-вниз, фигура должна оставаться в прежнем месте. Моя задача, написать под такой функционал тесты.

Трудности в работе с WebView возникали и раньше, не обязательно привязывать ответ конкретно под эту задачу.
Есть ли возможность работать с локаторами? как в селениуме и тд.
Использую UiAutomator, Robotium, единственный фрейм-ворк с веб-вью который нашел, Robocop, от Mozilla, но возникли трудности в разворачивании тестового окружения.

Буду очень признателен за помощь! Спасибо

1 лайк

Попробуй fmbt, довольно удачная реализация image-based тестирования. ссылка

3 лайка

Здравствуйте.


C WebView умеют работать следующие open-source решения:

Вышеперечисленные решения как раз используют текстовые локаторы (по аналогии с Selenium). Чуть по-разному эти локаторы задаются, но это уже формальности. Пара примеров:

# Appium
driver.findElement(By.xpath("//ImageView[@id='menuButton']")).click()

# Calabash
touch "ImageView id:'menuButton'"                                                        

Экраны можно описывать, используя Page Object подход.

Для захвата локаторов можно использовать Selendroid Inspector (входит в Selendroid и Appium), стандартные средства браузеров (открыв в них содержимое WebView), а также Chrome Remote Debugging.


Кроме того, существуют решения на основе распознавания изображений / образов:

В них вместо текстовых локаторов используются графические изображения нужных контролов — полей, кнопок и т.д. Проверяемый экран, полученный в результате действий также, как правило, сравнивается с графическим эталоном. И часто встроена функция распознавания текста (OCR).



По моему мнению, в вашем случае выбор должен прежде всего основываться на том, каким образом фигура реализована на веб-странице и насколько сложно определить её местоположение относительно других элементов.



— Если вы видите решение этой задачи известными вам средствами (скажем, Selenium’ом) — берите любой из перечисленных в первом списке инструментов. Комментарий: для MonkeyTalk нужны исходники, он встраивает доп. библиотеку в приложение; если работали с Selenium, вам будет проще осваивать Appium и Selendroid.

— Если же с ходу такое решение не представляете, рекомендую посмотреть в сторону image-based инструментов (второй список). При таком подходе будут сложности, но преодолимые:

  1. приложение нужно ставить и запускать отдельным скриптом (возможно не нужно для fMBT);
  2. чуть сложнее настроить тестирование на реальных устройствах;
  3. нужно больше ресурсов, чтобы запускать несколько тестов параллельно (на разных эмуляторах или устройствах).

P. S.
@Nebelskyi, спасибо вам за информацию о Robocop
@harad, вам спасибо за информацию о за fmbt

6 лайков

@anym0us Огромное спасибо за содержательный ответ!