How to click on a View which contains specified text using monkeyrunner and Android ViewClient?

2.1k views Asked by At

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.

1

There are 1 answers

0
Gabriel Porumb On BEST ANSWER

Problem solved. The latest version of AndroidViewClient solves my issue with the views.

I can use:

view = vc.findViewWithText('Dsiplay')
view.touch()