Skip to content

Commit

Permalink
Added ViewClient java launcher
Browse files Browse the repository at this point in the history
- Version 2.3.15
- dump moved to tools
- dump-simple.py and dump-simple-lib.py examples created
- dump.py prints notice
- dump-all-windows-lib.py example created
- updated build.xml to produce mixed java/python jar
  • Loading branch information
dtmilano committed May 1, 2013
1 parent 371f584 commit ae90647
Show file tree
Hide file tree
Showing 10 changed files with 487 additions and 103 deletions.
1 change: 1 addition & 0 deletions AndroidViewClient/.gitignore
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1 @@
bin/*
2 changes: 2 additions & 0 deletions AndroidViewClient/.settings/org.eclipse.core.resources.prefs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding//tools/culebra=utf-8
55 changes: 37 additions & 18 deletions AndroidViewClient/build.xml
Original file line number Original file line Diff line number Diff line change
@@ -1,23 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project name="Culebra" default="jar"> <project name="Culebra" default="jar">
<property file="ant.properties" /> <property file="ant.properties" />
<loadproperties srcFile="project.properties" /> <loadproperties srcFile="project.properties" />


<property name="versionRE" value="^\s*__version__\s*=\s*'(.*)'\s*$" /> <property name="versionRE" value="^\s*__version__\s*=\s*'(.*)'\s*$" />
<loadfile srcfile="src/com/dtmilano/android/viewclient.py" property="avc.version"> <loadfile srcfile="src/com/dtmilano/android/viewclient.py"
<filterchain> property="avc.version">
<linecontainsregexp> <filterchain>
<regexp pattern="${versionRE}" /> <linecontainsregexp>
</linecontainsregexp> <regexp pattern="${versionRE}" />
<tokenfilter> </linecontainsregexp>
<replaceregex pattern="${versionRE}" replace="\1" /> <tokenfilter>
</tokenfilter> <replaceregex pattern="${versionRE}" replace="\1" />
<striplinebreaks /> </tokenfilter>
</filterchain> <striplinebreaks />
</loadfile> </filterchain>
</loadfile>

<target name="jar" depends="compile">
<echo message="Creating ${avc.jarname} ${avc.version} jar ..." />
<jar destfile="bin/${avc.jarname}-${avc.version}.jar">
<fileset dir="src/" excludes="**/*.java" />
<fileset dir="." includes="tools/*" />
<fileset dir="bin/classes" />
<manifest>
<attribute name="Main-Class"
value="com.dtmilano.android.viewclient.ViewClient" />
</manifest>
</jar>
</target>

<target name="clean">
<delete dir="bin" />
</target>

<target name="compile">
<mkdir dir="bin/classes" />
<javac srcdir="src" destdir="bin/classes" />
</target>


<target name="jar" >
<echo message="Creating ${avc.jarname} ${avc.version} jar ..." />
<jar destfile="bin/${avc.jarname}-${avc.version}.jar" basedir="src/" />
</target>
</project> </project>
27 changes: 27 additions & 0 deletions AndroidViewClient/examples/dump-all-windows-lib.py
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,27 @@
#! /usr/bin/env shebang monkeyrunner -plugin $ANDROID_VIEW_CLIENT_HOME/bin/androidviewclient-$ANDROID_VIEW_CLIENT_VERSION.jar @!
#
# Linux:
#! /usr/local/bin/shebang monkeyrunner -plugin $AVC_HOME/bin/androidviewclient-$AVC_VERSION.jar @!
#
# Other:
#! /path/to/monkeyrunner -plugin /path/to/androidviewclient/bin/androidviewclient-2.3.14.jar
#
# No shebang:
# c:>path\to\monkeyrunner -plugin \path\to\androidviewclient-2.3.13.jar dump-all-windows-lib.py

'''
Copyright (C) 2012 Diego Torres Milano
Created on Apr 30, 2013
@author: diego
'''

from com.dtmilano.android.viewclient import ViewClient

kwargs2 = {'autodump': False}
vc = ViewClient(*ViewClient.connectToDeviceOrExit(), **kwargs2)
windows = vc.list()
for wId in windows.keys():
print ">>> window=", wId, windows[wId]
vc.dump(window=wId)
vc.traverse(transform=ViewClient.TRAVERSE_CIT, indent=" ")
21 changes: 21 additions & 0 deletions AndroidViewClient/examples/dump-simple-lib.py
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,21 @@
#! /usr/bin/env shebang monkeyrunner -plugin $ANDROID_VIEW_CLIENT_HOME/bin/androidviewclient-$ANDROID_VIEW_CLIENT_VERSION.jar @!
#
# Linux:
#! /usr/local/bin/shebang monkeyrunner -plugin $AVC_HOME/bin/androidviewclient-$AVC_VERSION.jar @!
#
# Other:
#! /path/to/monkeyrunner -plugin /path/to/androidviewclient/bin/androidviewclient-2.3.14.jar
#
# No shebang:
# c:>path\to\monkeyrunner -plugin \path\to\androidviewclient-2.3.13.jar dump-simple-lib.py

'''
Copyright (C) 2012 Diego Torres Milano
Created on Apr 30, 2013
@author: diego
'''

from com.dtmilano.android.viewclient import ViewClient

ViewClient(*ViewClient.connectToDeviceOrExit()).traverse(transform=ViewClient.TRAVERSE_CIT)
30 changes: 30 additions & 0 deletions AndroidViewClient/examples/dump-simple.py
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,30 @@
#! /usr/bin/env monkeyrunner
'''
Copyright (C) 2012 Diego Torres Milano
Created on Apr 30, 2013
@author: diego
'''


import sys
import os

# This must be imported before MonkeyRunner and MonkeyDevice,
# otherwise the import fails.
# PyDev sets PYTHONPATH, use it
try:
for p in os.environ['PYTHONPATH'].split(':'):
if not p in sys.path:
sys.path.append(p)
except:
pass

try:
sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
pass

from com.dtmilano.android.viewclient import ViewClient

ViewClient(*ViewClient.connectToDeviceOrExit()).traverse(transform=ViewClient.TRAVERSE_CIT)
90 changes: 6 additions & 84 deletions AndroidViewClient/examples/dump.py
Original file line number Original file line Diff line number Diff line change
@@ -1,87 +1,9 @@
#! /usr/bin/env monkeyrunner #! /usr/bin/env monkeyrunner
'''
Copyright (C) 2012 Diego Torres Milano
Created on Feb 3, 2012
@author: diego
'''


import sys
import os
import getopt

# This must be imported before MonkeyRunner and MonkeyDevice,
# otherwise the import fails.
# PyDev sets PYTHONPATH, use it
try:
for p in os.environ['PYTHONPATH'].split(':'):
if not p in sys.path:
sys.path.append(p)
except:
pass

try:
sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
pass


from com.dtmilano.android.viewclient import ViewClient print '''
Notice:
-------
'dump.py' was moved to the 'tools' directory and renamed 'dump'.
A simpler example is now in 'dump-simple.py'.
HELP = 'help' '''
VERBOSE = 'verbose'
IGNORE_SECURE_DEVICE = 'ignore-secure-device'
FORCE_VIEW_SERVER_USE = 'force-view-server-use'
DO_NOT_START_VIEW_SERVER = 'do-not-start-view-server'
WINDOW = 'window'
UNIQUE_ID = 'uniqueId'
POSITION = 'position'
CONTENT_DESCRIPTION = 'content-description'
CENTER = 'center'
# -u,-s,-p,-v eaten by monkeyrunner
MAP = {'i':ViewClient.TRAVERSE_CITUI, UNIQUE_ID:ViewClient.TRAVERSE_CITUI,
'x':ViewClient.TRAVERSE_CITPS, POSITION:ViewClient.TRAVERSE_CITPS,
'd':ViewClient.TRAVERSE_CITCD, CONTENT_DESCRIPTION:ViewClient.TRAVERSE_CITCD,
'c':ViewClient.TRAVERSE_CITC, CENTER:ViewClient.TRAVERSE_CITC,
}
SHORT_OPTS = 'HVIFSw:ixdc'
LONG_OPTS = [HELP, VERBOSE, IGNORE_SECURE_DEVICE, FORCE_VIEW_SERVER_USE,
DO_NOT_START_VIEW_SERVER, WINDOW + '=',
UNIQUE_ID, POSITION, CONTENT_DESCRIPTION, CENTER]

def usage(exitVal=1):
print >> sys.stderr, 'usage: dump.py [-H|--%s] [-V|--%s] [-I|--%s] [-F|--%s] [-S|--%s] [-w|--%s=WINDOW] [-i|--%s] [-x|--%s] [-d|--%s] [-c|--%s] [serialno]' % \
tuple(LONG_OPTS)
sys.exit(exitVal)

try:
opts, args = getopt.getopt(sys.argv[1:], SHORT_OPTS, LONG_OPTS)
sys.argv[1:] = args
except getopt.GetoptError, e:
print >>sys.stderr, 'ERROR:', str(e)
usage()

kwargs1 = {VERBOSE: False, 'ignoresecuredevice': False}
kwargs2 = {'forceviewserveruse': False, 'startviewserver': True, 'autodump': False}
options = {WINDOW: -1}
transform = ViewClient.TRAVERSE_CIT
for o, a in opts:
o = o.strip('-')
if o in ['H', HELP]:
usage(0)
elif o in ['V', VERBOSE]:
kwargs1[VERBOSE] = True
elif o in ['I', IGNORE_SECURE_DEVICE]:
kwargs1['ignoresecuredevice'] = True
elif o in ['F', FORCE_VIEW_SERVER_USE]:
kwargs2['forceviewserveruse'] = True
elif o in ['S', DO_NOT_START_VIEW_SERVER]:
kwargs2['startviewserver'] = False
elif o in ['w', WINDOW]:
options[WINDOW] = a
else:
transform = MAP[o]

vc = ViewClient(*ViewClient.connectToDeviceOrExit(**kwargs1), **kwargs2)
vc.dump(window=options[WINDOW])
vc.traverse(transform=transform)
2 changes: 1 addition & 1 deletion AndroidViewClient/src/com/dtmilano/android/viewclient.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
@author: diego @author: diego
''' '''


__version__ = '2.3.14' __version__ = '2.3.15'


import sys import sys
import subprocess import subprocess
Expand Down
Loading

0 comments on commit ae90647

Please sign in to comment.