我刚刚开始使用Calabash,我正在尝试测试在Genymotion下运行的Android应用程序。
当我运行简单的测试来启动应用程序并查看初始屏幕时,我可以在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}}]
我做错了什么?
您看到的是Cordova生成的Android应用程序的布局。Cordova在SystemWebView中显示应用程序中的所有内容,因此您需要在其中查找HTML。您可以使用此查询在web视图中看到整个页面的html
query("SystemWebView css:'*'")
有关如何使用Calabash测试web视图的更多详细信息,请参阅此wiki页面。