2016-09-12 1 views
1

J'essaie de rechercher une vidéo sur youtube en utilisant AndroidViewClient.AndroidViewClient: view not found error

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

La ligne:

search = vc.findViewWithTextOrRaise(re.compile(u'Search\ YouTube')) 

Lance une vue erreur introuvable, même si il y a une vue avec le texte exact.

Il fonctionne si je vider la fenêtre:

vc.dump(window='-1') 
search = vc.findViewWithTextOrRaise(re.compile(u'Search\ YouTube')) 

Quelqu'un peut-il me dire pourquoi cela est nécessaire? Comment puis-je reconnaître que je dois vider la fenêtre avant de trouver une vue, des conseils?

Répondre

2

Chaque fois que vous faites quelque chose qui change l'écran comme

search.touch() 

vous devriez appeler

vc.dump(window='-1') 

pour actualiser la représentation interne de l'écran et d'être en mesure de rechercher ou d'interagir avec les nouvelles vues qui n'étaient pas là avant.

En outre, vous pouvez utiliser culebra -G pour démarrer Culebra GUI et pointer et cliquer sur la représentation de l'interface utilisateur pour générer le script, ce qui générera le dump() en cas de besoin.