我正在使用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)
如果我做错了,请告诉我?
答案 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()
使用正则表达式,您可以选择相册,所有图片标题,与标题中列出的图片数量无关。