Calabash 使用查询命令的意外结果

Unexpected result from Calabash using query command

我刚开始使用 Calabash,我正在尝试在 Genymotion 下测试 Android 应用 运行ning。

当我运行启动应用程序并查看初始屏幕的简单测试时,我可以在Genymotion模拟器中看到屏幕显示但是当我使用查询命令时

puts(query('*'))

我在返回的结果中没有看到任何预期的内容(例如屏幕 header)。

相反,我只看到:

[{"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 视图的更多详细信息,请参阅 this wiki page