我正在尝试使用AndroidViewClient在youtube中搜索视频。
package = 'com.google.android.youtube'
activity = 'com.google.android.apps.youtube.app.WatchWhileActivity'
component = package + "/" + activity
device, serialno = ViewClient.connectToDeviceOrExit()
device.startActivity(component=component)
vc = ViewClient(device, serialno)
search = vc.findViewWithContentDescriptionOrRaise(
re.compile(u'''Search'''))
search.touch()
search = vc.findViewWithTextOrRaise(re.compile(u'Search\ YouTube'))
search.type('hello')
device.press('KEYCODE_ENTER')
该行:
search = vc.findViewWithTextOrRaise(re.compile(u'Search\ YouTube'))
即使存在具有确切文本的视图,也会引发视图未找到错误。
如果我转储窗口,它会起作用:
vc.dump(window='-1')
search = vc.findViewWithTextOrRaise(re.compile(u'Search\ YouTube'))
谁能告诉我为什么这是必要的?我怎么认识到我必须在找到视图之前转储窗口,任何提示?
答案 0 :(得分:2)
每次你做一些改变屏幕的事情就像
一样search.touch()
你应该调用
vc.dump(window='-1')
刷新屏幕的内部表示,并能够搜索或与以前不存在的新视图交互。
此外,您可以使用culebra -G
启动Culebra GUI并指向并点击UI表示以生成脚本,该脚本将在需要时生成dump()
。