2016-04-03 15 views
0

Ich habe gerade begonnen, Calabash zu verwenden, und ich versuche, eine Android-App zu testen, die unter Genymotion läuft.Unerwartetes Ergebnis von Calabash mit dem Abfragebefehl

Wenn ich den einfachen Test ausführen, um die Anwendung zu starten und den Startbildschirm sehen, kann ich die Bildschirmanzeige im Genymotion Emulator sehen, aber wenn ich den Befehl Abfrage verwenden

puts(query('*')) 

ich nicht einen der sehen erwarteter Inhalt (z. B. der Bildschirmkopf) im zurückgegebenen Ergebnis.

Stattdessen sehe ich nur:

[{"id"=>nil, "enabled"=>true, "contentDescription"=>nil, "visible"=>true, "tag"=>nil, "description"=>"com.android.internal.policy.impl.PhoneWindow$DecorView{52824ec0 V.E..... R 
....... 0,0-1080,1920}", "class"=>"com.android.internal.policy.impl.PhoneWindow$DecorView", "rect"=>{"center_y"=>960, "center_x"=>540, "height"=>1920, "y"=>0, "width"=>1080, "x"=>0}} 
, {"id"=>nil, "enabled"=>true, "contentDescription"=>nil, "visible"=>true, "tag"=>nil, "description"=>"android.widget.LinearLayout{528127a0 V.E..... ........ 0,0-1080,1920}", "class" 
=>"android.widget.LinearLayout", "rect"=>{"center_y"=>960, "center_x"=>540, "height"=>1920, "y"=>0, "width"=>1080, "x"=>0}}, {"id"=>"content", "enabled"=>true, "contentDescription"=> 
nil, "visible"=>true, "tag"=>nil, "description"=>"android.widget.FrameLayout{5280cab8 V.E..... ........ 0,0-1080,1920 #1020002 android:id/content}", "class"=>"android.widget.FrameLay 
out", "rect"=>{"center_y"=>960, "center_x"=>540, "height"=>1920, "y"=>0, "width"=>1080, "x"=>0}}, {"id"=>"NoResourceEntry-100", "enabled"=>true, "contentDescription"=>"Web View", "vi 
sible"=>true, "tag"=>nil, "description"=>"org.apache.cordova.engine.SystemWebView{52821914 VFEDH.C. .F...... 0,0-1080,1920 #64}", "class"=>"org.apache.cordova.engine.SystemWebView", 
"rect"=>{"center_y"=>960, "center_x"=>540, "height"=>1920, "y"=>0, "width"=>1080, "x"=>0}}] 

Was mache ich falsch?

Antwort

2

Was Sie sehen, ist das Layout der Android App, die von Cordova generiert wurde. Cordova zeigt alles aus Ihrer App in der SystemWebView an, also wollen Sie dort nach Ihrem HTML suchen. Sie können den HTML-Code der ganzen Seite in der Web-Ansicht sehen mit dieser Abfrage

query("SystemWebView css:'*'") 

this wiki page Siehe für weitere Einzelheiten über Web-Ansichten mit Calabash zu testen.

+0

Das hat es definitiv gelöst. Vielen Dank. Aber bedeutet das, dass alle vorgefertigten Schritte für Calabash-android zB assert_steps funktionieren nicht? Das war mein ursprüngliches Problem. –

+0

Ich benutzte den Schritt "Dann sehe ich den Text", der schließlich Abfrage ("* {Text enthält [c] '')" in Wait_for_text-Methode. Von dem, was Sie sagen, dass dies sein sollte: Abfrage ("SystemWebView css: * {text ENTHÄLT [c] ''} '") obwohl ich, wie würde verstehen nicht wirklich diese zitiert werden? –

+0

> Eingemachte Stufen. Richtig. Sie werden nicht funktionieren. Sie sollten Ihre eigenen Schritte schreiben. – jmoody