В KitKat нам удалось получить иерархию представлений webview из дампа UIAutomator, если фокус был помещен в веб-просмотр. Мне было интересно, есть ли альтернативная функциональность для получения иерархии представлений webview с выпуском lollipop или если эта функция была потеряна в выпуске?Сброс UiAutomator для Lollipop Lost WebView Просмотр иерархии
ответ
Мне понадобилось время, чтобы это исправить, но в принципе для практических целей да, эта функциональность была потеряна в этом выпуске.
Есть несколько глупых работ, но они ненадежны.
Ваш лучший выбор - написать фактический модульный тест, который запускается uiautomator, и использовать API dumpWindowHierarchy, чтобы извлечь его самостоятельно. Если вы это делаете, важно убедиться, что WebView, который вы хотите извлечь, создается после запуска uiautomator (но, очевидно, перед тем, как сделать вызов dumpWindowHierarchy). Лучший способ добиться этого будет зависеть от ваших точных обстоятельств.
Я написал больше предположений о том, почему это могло измениться в Lollipop в blog post.
Я не уверен, что вам нужно сделать, но, возможно, setWebContentsDebuggingEnabled() может помочь. Включение этого параметра позволит вам отлаживать содержимое вашего WebView с помощью Chrome, это также может повлиять на поведение UiAutomator, поэтому дайте ему шанс!
WebView web = ...
web.setWebContentsDebuggingEnabled(true);
Более подробные документы о удаленной отладки на webviews можно найти here.
Это, похоже, было исправлено в Android System Webview v44 вверх для Android Lollipop. Просто сегодня утром, и дамп теперь, похоже, дает мне иерархию взглядов. Попробуйте обновить webview и еще раз поехать :-)
Спасибо, что посмотрели! Я знаком с setWebContentsDebuggingEnabled и веб-обозревателями Chrome Debugging. К сожалению, это относится к сторонним приложениям, которые я не могу переупаковать. – shibbybird