Standard androidBrowserDoes not provide an option in its menu to view the HTML page source. Some workarounds like installing apps and then usingShare pageFrom
Browser'S menu has been described and also the use of JavaScript and jquery to add to a page has been detailed, but we are hungry for more. needless to say, all these methods involve some manual step so I felt the need to find a completely
Automatic way of doing it.
Of course, to do it I wowould resort to our old pal
Androidviewclient. This is a very interesting example of its use because it lies far from testing and application or UI.
And so, without further ado, let me introduce youThe Code...
#! /usr/bin/env monkeyrunner'''Copyright (C) 2012 Diego Torres MilanoCreated on Oct 12, 2012@author: diego'''import reimport sysimport os# This must be imported before MonkeyRunner and MonkeyDevice,# otherwise the import fails.# PyDev sets PYTHONPATH, use ittry: for p in os.environ['PYTHONPATH'].split(':'): if not p in sys.path: sys.path.append(p)except: passtry: sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))except: passfrom com.dtmilano.android.viewclient import ViewClientfrom com.android.monkeyrunner import MonkeyRunner, MonkeyDeviceVPS = "javascript:alert(document.getElementsByTagName('html')[0].innerHTML);"PACKAGE = 'com.android.browser'ACTIVITY = '.BrowserActivity'COMPONENT = PACKAGE + "/" + ACTIVITYURI = 'http://dtmilano.blogspot.com'device, serialno = ViewClient.connectToDeviceOrExit()device.startActivity(component=COMPONENT, uri=URI)MonkeyRunner.sleep(3)vc = ViewClient(device=device, serialno=serialno)device.drag((240, 180), (240, 420), 10, 10)url = vc.findViewByIdOrRaise('id/url')url.touch()MonkeyRunner.sleep(1)device.press('KEYCODE_DEL', MonkeyDevice.DOWN_AND_UP)for c in VPS: device.type(c)device.press('KEYCODE_ENTER', MonkeyDevice.DOWN_AND_UP)MonkeyRunner.sleep(3)vc.dump()print vc.findViewByIdOrRaise('id/message').getText().replace('\\n', "\n")device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
And now a brief explanation of the most important pieces of this script.
- Shebang, you know, to invoke monkeyrunner as the interpreter. I don't have to tell you more (if you are a poor Windows user you may have to invoke monkeyrunner from command
Line, I feel sad for you)
- Some comments and imports
- ReadPythonpathJust in case you are using eclipse and pydev (this has been explained in thispost)
- Then useAndroid_view_client_homeEnvironment variable to findAndroidviewclientIn your system
- Some constants defined.VPSIs the actual JavaScript to obtain the page source
- The standard way of connecting to the device or emulator inAndroidviewclient. This handles errors and timeout automatically solving extends problems you find with bare monkeyrunner
- We start Browser
- Drag a bit to make the URL visible in case the page has scrolled
- Next, we findViewWith IDID/URL, Which you know, contains the URL
- We touch to focus
- And type the Javascript inVPSFollowedEnter
- By that time the alert dialog shocould be on screen so we take a new dump
- Now we findViewWith IDID/messageWhich containsHtmlAnd print it
- Finally, we pressBackTo dismiss it
I hope you have enjoyed it as much as I did and this help you find new ways of using
Androidviewclient. P.s. This script will be part
AndroidviewclientSource code distribution examples
Reprinted from: http://dtmilano.blogspot.com/search/label/AndroidViewClient