MonkeyRunner_Click on a View contains specified text using monkeyrunner and Android ViewClient

来源:互联网 发布:koala软件 编辑:程序博客网 时间:2024/05/22 04:42

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 tabletdevice.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.


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

I can use:

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

原创粉丝点击