当通过终端控制台运行query("*")时,我会得到类似于以下的输出。此输出对于所有意图和目的都是正确的:
[
[ 0] {
"id" => nil,
"enabled" => true,
"contentDescription" => nil,
"class" => "com.android.internal.policy.impl.PhoneWindow$DecorView",
"rect" => {
"center_y" => 616,
"center_x" => 360,
"height" => 507,
"y" => 363,
"width" => 640,
"x" => 40
}
]
然而,当我在测试执行期间在RubyMine上运行相同的命令时,我会得到错误的偏移输出,如下所示:
{
"id"=>nil,
"enabled"=>true,
"contentDescription"=>nil,
"class"=>"com.android.internal.policy.impl.PhoneWindow$DecorView",
"rect"=>{
"center_y"=>394,
"center_x"=>360,
"height"=>507,
"y"=>141,
"width"=>640,
"x"=>40
},
"tag"=>nil,
"description"=>"com.android.internal.policy.impl.PhoneWindow$DecorView{41fcdad8 V.E..... R....... 0,0-640,507}
}
我只在我的应用程序中的一个特定屏幕上看到这种行为。其余的都如预期的那样工作,但在这个屏幕上,它始终有222个像素。
这导致点击事件失败,因为它认为某个元素在屏幕上的位置比实际位置高得多
我偶尔会在控制台上看到错误的输出,RubyMine也有正确的输出,但大约95%的情况下,行为都是我所描述的。
我正在使用葫芦安卓0.5.2
有人知道是什么导致了这种变异吗?
事实证明,偏移量出现在应用程序的这个屏幕上,因为键盘在上一个屏幕上是可见的。
当键盘可见时单击以生成弹出窗口会导致calabash在键盘仍然存在或至少在消失的过程中读取视图的位置,因此"y"one_answers"center_y"坐标升高了几百像素。
我通过在选择弹出窗口之前使用"press_back_button"关闭键盘来解决这个问题。