0

我正在使用带有 androidviewclient 的 monkeyrunner 测试 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)

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

4

1 回答 1

0

您的相册不太可能有uniqueId ' id/no_id/1'。您可以使用dump.py. 如果我dump.py --uniqueId在 4.0.3 Gallery 上运行,我将获得

 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()

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

于 2012-12-01T08:11:58.130 回答