I'm trying to simulate a click on an Android tablet using monkey runner and Android ViewClient. I want to click on a region/ view which has specific text. Here's an example of what i'm trying to do:
I have a script where I import MonkeyRunner, MonkeyDevice, ViewClient
from com.dtmilano.android.viewclient import ViewClient
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
Connect the tablet and create a MonkeyDevice object
device = MonkeyDevice.waitForConnection()
Using the device I then create an Android ViewClient object
vc = ViewClient(device)
I open the Settings app on my tablet
device.startActivity('com.android.settings/.Settings')
I then find the desired view using:
displayView = findViewWithAttribute('text:mText', 'Display')
Then I try to click on that view (by simulating a touch event):
displayView.touch()
The problem is that this script touches another part of the screen, somewhere in the left part of the WiFi line in the Settings app.
I looked in ViewClient's source code and found that the touch() method returns the (x,y) coordinates of the view and then uses the MonkeyDevice.touch() method. But the (x,y) coordinates returned are relative to the view's parent.
Does anybody know how to get the correct (x,y) coordinates of the view object?
Or at least a way to get the parents of the view.
Problem solved. The latest version of AndroidViewClient solves my issue with the views.
I can use:
view = vc.findViewWithText('Dsiplay')
view.touch()