I am trying to automate the installation of UC browser. I able to reach to the final "Enter UC" button (below screenshot) button activity.I need to simulate the click on "Enter UC"
button.
I tried multiple ways(listed below) to simulate the click but nothing worked out.
1.)Using UIautomator dump - I tried to fetch the dump and parse it to get the bound but when I am fetching the dump using adb shell uiautomator dump
, I am not able to get the full complete UI hierarchy (maybe because it gives UI of only native view - I am not sure please let me know if you have any pointer).
Dump:
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<hierarchy rotation="0">
-<node bounds="[0,38][480,800]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="false" checked="false" checkable="false" content-desc="" package="com.UCMobile.intl" class="android.widget.FrameLayout" resource-id="" text="" index="0">
<node bounds="[0,38][480,800]" selected="false" password="false" long-clickable="false" scrollable="false" focused="false" focusable="false" enabled="true" clickable="true" checked="false" checkable="false" content-desc="" package="com.UCMobile.intl" class="android.view.View" resource-id="" text="" index="0" NAF="true"/>
</node>
</hierarchy>
2.) Tried to see any resource id/ text / any special dump so that I can get the
element and try tap but there is no id/class/text is there for "Enter UC" button.
Please let me know if you have any suggestions over it.
UC Browser implements its UI with a custom View (as you can see from the dump) then it's not possible for UiAutomator or similar tools to get an insight of its components.
There are no many alternatives left then. You can use AndroidViewClient/culebra or CulebraTester to swipe through the first screens but when the last one is reached you should have to touch using screen coordinates.
The generated script (python in this case but you can also generate java):
#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''
Copyright (C) 2013-2016 Diego Torres Milano
Created on 2017-05-06 by CulebraTester
__ __ __ __
/ \ / \ / \ / \
____________________/ __\/ __\/ __\/ __\_____________________________
___________________/ /__/ /__/ /__/ /________________________________
| / \ / \ / \ / \ \___
|/ \_/ \_/ \_/ \ o \
\_____/--<
@author: Diego Torres Milano
@author: Jennifer E. Swofford (ascii art snake)
'''
import re
import sys
import os
import unittest
try:
sys.path.insert(0, os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
pass
import pkg_resources
pkg_resources.require('androidviewclient>=12.4.0')
from com.dtmilano.android.viewclient import ViewClient, CulebraTestCase
from com.dtmilano.android.uiautomator.uiautomatorhelper import UiAutomatorHelper, UiScrollable, UiObject, UiObject2
TAG = 'CULEBRA'
class CulebraTests(CulebraTestCase):
@classmethod
def setUpClass(cls):
cls.kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False}
cls.kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': True, 'ignoreuiautomatorkilled': True, 'autodump': False, 'startviewserver': True, 'compresseddump': True}
cls.options = {'start-activity': None, 'concertina': False, 'device-art': None, 'use-jar': False, 'multi-device': False, 'unit-test-class': True, 'save-screenshot': None, 'use-dictionary': False, 'glare': False, 'dictionary-keys-from': 'id', 'scale': 1, 'find-views-with-content-description': True, 'window': -1, 'orientation-locked': None, 'save-view-screenshots': None, 'find-views-by-id': True, 'log-actions': False, 'use-regexps': False, 'null-back-end': False, 'auto-regexps': None, 'do-not-verify-screen-dump': True, 'verbose-comments': False, 'gui': False, 'find-views-with-text': True, 'prepend-to-sys-path': False, 'install-apk': None, 'drop-shadow': False, 'output': None, 'unit-test-method': None, 'interactive': False}
cls.sleep = 5
def setUp(self):
super(CulebraTests, self).setUp()
def tearDown(self):
super(CulebraTests, self).tearDown()
def preconditions(self):
if not super(CulebraTests, self).preconditions():
return False
return True
def testSomething(self):
if not self.preconditions():
self.fail('Preconditions failed')
_s = CulebraTests.sleep
_v = CulebraTests.verbose
self.vc.click(x=520, y=1603)
self.vc.sleep(_s)
if __name__ == '__main__':
CulebraTests.main()