2014-10-27 4 views
14

पर्यावरण कारणों से मैं केवल adb आदेशों का उपयोग कर सकता हूं।क्या एडीबी के माध्यम से वर्तमान गतिविधि के लेआउट और विचार प्राप्त करने का कोई तरीका है?

वहाँ एक रास्ता वर्तमान लेआउट पाने के लिए id, position, text आदि तरह जिम्मेदार बताते है?

uiautomatorviewer शो के समान।

उत्तर

17

उपयोग 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's 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 

के विचारों पदानुक्रम उदासीनता आम तौर पर आप आगे की प्रक्रिया के लिए अपने पीसी जो एक अतिरिक्त होगा उस फ़ाइल को खींचने के लिए चाहते हो जाएगा कदम। लेकिन एक साफ चाल है जो डंपिंग को जोड़ती है और एक ही कमांड में खींचती है।

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 
+1

एक नोट जोड़ना चाहता था कि केवल एक यूआईयूयूटोमेटर क्लाइंट चल रहा हो या कमांड "मार डाला" और काम नहीं करेगा। जब तक मुझे पता चला कि मुझे खुले यूआईयूयूटोमेटर कनेक्शन का उपयोग करके परीक्षण चलाने से अवरुद्ध किया गया था तब तक मैं इस पर फंस गया था। –

+1

@Alex मैंने एंड्रॉइड एमुलेटर से यूई पदानुक्रम प्राप्त करने के लिए ui ऑटोमेटर डंप को चलाने का प्रयास किया, लेकिन ऐसा लगता है कि मुझे पूरा डंप नहीं मिल रहा है। मैं क्या गलत कर रहा हूं? मैं एंड्रॉइड एमुलेटर में चल रहे यूसीब्रोसर की गतिविधि के लिए डंप प्राप्त करने की कोशिश कर रहा हूं ताकि मैं क्लिक करने के लिए बटन/आइटम की बाध्यता प्राप्त कर सकूं। मैंने यहां एसओ पर एक प्रश्न भी पूछा है - http://stackoverflow.com/questions/43780490/automate-the-installation-of-ucbrowser – Jignesh

+1

मेरे कंप्यूटर में '/ dev/tty' –

2
adb pull $(adb shell uiautomator dump | grep -oP '[^ ]+.xml') /tmp/view.xml 

ओपन /tmp/view.xml की तरह एक वेब ब्राउज़र में:

google-chrome /tmp/view.xml 

एडीबी कार्यकारी एक डंप स्थल के रूप में /dev/tty का उपयोग करते हुए एक भी आदेश जो stdout करने के लिए पूरे डंप मुद्रित होता होगा - यूट्यूटोमीटर डंप/देव/टीटी

दूसरे उत्तर से मेरे लिए काम नहीं किया।

adb shell uiautomator dump && adb pull /sdcard/window_dump.xml $TMPDIR && more $TMPDIR/window_dump.xml | xmllint --format -

आप /sdcard/window_dump.xml फ़ाइल का रास्ता बदलना पड़ सकता है जहां xml फ़ाइल फेंक दिया जाता है पर आधारित खींचने के लिए:

+0

के साथ बहुत बढ़िया चाल काम नहीं करती है। मैं इस 'adb pull $ (adb shell uiautomator डंप | egrep -o' /.*? xml ') में बदल जाता हूं – chinaanihchen

1

मैं किसी Mac निम्नलिखित कंसोल के लिए स्वरूपित xml मुद्रित करने के लिए प्रयोग किया जाता है।

1

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 चल रहा है, सिर्फ दूसरे हाथ पर विचार के पेड़ और अपनी बुनियादी गुण के कुछ प्रिंट, आईडी

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 

की तरह, अगर आप विचारों के पदों चाहते हैं, आप चला सकते हैं

$ डंप -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) 

विकल्प आप दे देंगे आउटपुट पर नियंत्रण। आप कुछ और जानकारी here प्राप्त कर सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे