По соображениям среды я могу использовать только команды adb
.
Есть ли способ, чтобы получить текущие атрибуты раскладки, такие как id
, position
, text
и т.д. ?
Как показано uiautomatorviewer
.
По соображениям среды я могу использовать только команды adb
.
Есть ли способ, чтобы получить текущие атрибуты раскладки, такие как id
, position
, text
и т.д. ?
Как показано uiautomatorviewer
.
Используйте команду adb shell uiautomator dump
:
Usage: uiautomator <subcommand> [options]
Available subcommands:
help: displays help message
runtest: executes UI automation tests
runtest <class spec> [options]
<class spec>: <JARS> < -c <CLASSES> | -e class <CLASSES> >
<JARS>: a list of jar files containing test classes and dependencies. If
the path is relative, it assumed to be under /data/local/tmp. Use
absolute path if the file is elsewhere. Multiple files can be
specified, separated by space.
<CLASSES>: a list of test class names to run, separated by comma. To
a single method, use TestClass#testMethod format. The -e or -c option
may be repeated. This option is not required and if not provided then
all the tests in provided jars will be run automatically.
options:
--nohup: trap SIG_HUP, so test won't terminate even if parent process
is terminated, e.g. USB is disconnected.
-e debug [true|false]: wait for debugger to connect before starting.
-e runner [CLASS]: use specified test runner class instead. If
unspecified, framework default runner will be used.
-e <NAME> <VALUE>: other name-value pairs to be passed to test classes.
May be repeated.
-e outputFormat simple | -s: enabled less verbose JUnit style output.
dump: creates an XML dump of current UI hierarchy
dump [--verbose][file]
[--compressed]: dumps compressed layout information.
[file]: the location where the dumped XML should be stored, default is
/storage/emulated/legacy/window_dump.xml
events: prints out accessibility events until terminated
По умолчанию он сбрасывает иерархию представлений на $EXTERNAL_STORAGE/window_dump.xml
adb shell uiautomator dump
UI hierchary dumped to: /sdcard/window_dump.xml
Обычно вы хотите вытащить этот файл на свой компьютер для дальнейшей обработки, что станет дополнительным шагом. Но есть опрятный трюк, который позволяет комбинировать демпинг и вытягивание в одну команду. Использование /dev/tty
в качестве адресата дампа сделает одну команду, которая будет печатать весь дамп в stdout
:
adb exec-out uiautomator dump /dev/tty
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><hierarchy rotation="0"><node ...></node></hierarchy>UI hierchary dumped to: /dev/tty
adb pull $(adb shell uiautomator dump | grep -oP '[^ ]+.xml') /tmp/view.xml
Откройте /tmp/view.xml
в веб-браузере, например:
google-chrome /tmp/view.xml
adb exec-out uiautomator dump/dev/tty
из другого ответа не сработало для меня.
Я использовал следующее на Mac для печати форматированного xml на консоль:
adb shell uiautomator dump && adb pull /sdcard/window_dump.xml $TMPDIR && more $TMPDIR/window_dump.xml | xmllint --format -
Вам может потребоваться изменить путь к файлу /sdcard/window_dump.xml
, чтобы вытащить его на основе того, где выгружается файл xml.
AndroidViewClient/culebra dump
инструмент позволяет делать именно это. AndroidViewClient можно использовать как библиотеку, а также предоставляет такие инструменты, как dump
и culebra
.
usage: dump [OPTION]... [serialno]
Options:
-H, --help prints this help
-V, --verbose verbose comments
-v, --version
-I, --ignore-secure-device ignore secure device
-E, --ignore-version-check ignores ADB version check
-F, --force-view-server-use force view server use (even if UiAutomator present:w)
-S, --do-not-start-view-server don't start ViewServer
-k, --do-not-ignore-uiautomator-killed don't ignore UiAutomator killed
-w, --window=WINDOW dump WINDOW content (default: -1, all windows)
-a, --all dump all information about Views
-i, --uniqueId dump View unique IDs
-x, --position dump View positions
-b, --bounds dump View bounds
-d, --content-description dump View content descriptions
-g, --tag dump View tags
-c, --center dump View centers
-f, --save-screenshot=FILE save screenshot to file
-W, --save-view-screenshots=DIR save View screenshots to files in directory
-D, --do-not-dump-views don't dump views, only useful if you specified -f or -W
-A, --device-art=MODEL device art model to frame screenshot (auto: autodetected)
-Z, --drop-shadow drop shadow for device art screenshot
-B, --glare screen glare over screenshot
-h, --use-uiautomator-helper use UiAutomatorHelper Android app
-X, --debug=LIST debug options
работает dump
без параметров, просто печатает дерево представлений и некоторые его основные свойства, такие как ID
android.widget.FrameLayout
com.android.launcher3.Workspace com.google.android.apps.nexuslauncher:id/workspace
android.widget.FrameLayout com.google.android.apps.nexuslauncher:id/workspace_blocked_row
android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text1 May 1
android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text2 MONDAY, 2017
android.widget.TextView Maps
android.widget.ImageView com.google.android.apps.nexuslauncher:id/g_icon
android.widget.ImageView com.google.android.apps.nexuslauncher:id/all_apps_handle
android.view.ViewGroup com.google.android.apps.nexuslauncher:id/layout
android.widget.TextView Messenger
android.widget.TextView Chrome
с другой стороны, если вы хотите разместить позиции, вы можете запустить
$dump -x
android.widget.FrameLayout (0, 0, 1440, 2392)
com.android.launcher3.Workspace com.google.android.apps.nexuslauncher:id/workspace (0, 0, 1440, 2392)
android.widget.FrameLayout com.google.android.apps.nexuslauncher:id/workspace_blocked_row (30, 126, 1380, 372)
android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text1 May 1 (1037, 194, 337, 162)
android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text2 MONDAY, 2017 (1092, 356, 282, 73)
android.widget.TextView Maps (30, 1614, 276, 372)
android.widget.ImageView com.google.android.apps.nexuslauncher:id/g_icon (30, 214, 276, 196)
android.widget.ImageView com.google.android.apps.nexuslauncher:id/all_apps_handle (636, 1986, 168, 98)
android.view.ViewGroup com.google.android.apps.nexuslauncher:id/layout (0, 2084, 1440, 308)
android.widget.TextView Messenger (306, 2112, 276, 280)
android.widget.TextView Chrome (858, 2112, 276, 280)
Параметры предоставят вам контроль над выходом. Вы можете получить дополнительную информацию здесь.