Viewclient touch()作为一个长按,它应该像点击一样工作?

时间:2012-11-30 07:06:41

标签: monkeyrunner androidviewclient

我正在使用monkeyrunner和androidviewclient测试android 4.0.3的Gallery应用程序,当我尝试用AVC的touch()函数点击任何专辑时,它正在选择专辑。它应该打开一张专辑。 我打开相册的代码是

   MonkeyRunner.sleep(3)
   vc=ViewClient(device,serialNo)
   firstAlbum = vc.findViewById('id/no_id/1')
   firstAlbum.touch(MonkeyDevice.DOWN_AND_UP)

如果我做错了,请告诉我?

1 个答案:

答案 0 :(得分:0)

您的相册不太可能 uniqueId 'id/no_id/1'。您可以使用dump.py进行验证。如果我在4.0.3图库上运行dump.py --uniqueId,我会获得

 com.android.internal.policy.impl.PhoneWindow$DecorView NO_ID None id/no_id/1
   android.widget.LinearLayout NO_ID None id/no_id/2
      android.view.ViewStub id/action_mode_bar_stub None id/action_mode_bar_stub
      android.widget.FrameLayout NO_ID None id/no_id/3
         android.widget.TextView id/title Gallery id/title
      android.widget.FrameLayout id/content None id/content
         android.widget.RelativeLayout id/root None id/root
            android.widget.GridView id/albums None id/albums
               android.widget.LinearLayout NO_ID None id/no_id/4
                  com.android.camera.GalleryPickerItem id/thumbnail None id/thumbnail
                  android.widget.TextView id/title All pictures (3) id/title/1
               android.widget.LinearLayout NO_ID None id/no_id/5
                  com.android.camera.GalleryPickerItem id/thumbnail None id/thumbnail/1
                  android.widget.TextView id/title Download (3) id/title/2

所以,我想你想要第一张专辑,然后我会用:

vc = ViewClient(*ViewClient.connectToDeviceOrExit())
firstAlbum = vc.findViewWithTextOrRaise(re.compile('All pictures \(\d+\)'))
firstAlbum.touch()

或(作为oneliner):

ViewClient(*ViewClient.connectToDeviceOrExit()).findViewWithTextOrRaise(re.compile('All pictures \(\d+\)')).touch()

使用正则表达式,您可以选择相册,所有图片标题,与标题中列出的图片数量无关。