2016-04-03 31 views
0

我剛開始使用Calabash,我試圖測試在Genymotion下運行的Android應用程序。Calabash使用查詢命令的意外結果

當運行簡單的測試來啓動應用程序並查看初始屏幕,我可以看到屏幕顯示在Genymotion模擬器但是當我使用該查詢命令

puts(query('*')) 

我沒有看到任何的預期的內容(例如屏幕標題)在返回的結果中。

相反,我只看到:

[{"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}}] 

我在做什麼錯?

回答

2

您所看到的是由科爾多瓦生成的Android應用程序的佈局。 Cordova在SystemWebView中顯示來自您的應用程序的所有內容,因此您希望在那裏查找您的HTML。你可以看到在Web視圖整個頁面的HTML與此查詢

query("SystemWebView css:'*'") 

關於如何使用葫蘆測試Web視圖的更多細節見this wiki page

+0

這絕對解決了它。謝謝。但是,這是否意味着葫蘆android的所有罐裝步驟,例如assert_steps不工作?這是我原來的問題。 –

+0

我正在使用「然後我看到文本」步驟,最後調用 query(「* {text CONTAINS [c]''})) in wait_for_text方法。 從你說的話,這應該是: 查詢( 「SystemWebView CSS: '* {文本包含[C] ''}'」) 雖然我真的不明白這會被引用? –

+0

>罐裝步驟。正確。他們不會工作。你應該寫自己的步驟。 – jmoody