2014-10-29 83 views
0

我有一个简单的例程,通过在屏幕上向左滑动来从屏幕上删除大量记录。它只会删除某个状态的记录,即准备提交。最高记录可能不一定处于该状态,所以我不能使用固定的y坐标。相反,我使用在该状态下找到的第一条记录的y坐标。如何引用dragFromToForDuration方法使用的坐标的变量

这里是我试图执行代码:

while query("* marked:'SUBMIT'").count > 0 
    y = query("UIButtonLabel marked:'SUBMIT'")[0]["rect"]["center_y"] 
    uia('target.dragFromToForDuration({x:"481.5", y:"#{y}"}, {x:"350", y:"#{y}"}, "1")') 
    touch("* marked:'Delete'") 
    touch("view:'_UIAlertControllerActionView' marked:'Delete'") 
end 

的问题是变量y似乎是不可访问埋葬所有这些引号内。该方法成功,但UI没有按预期做出响应。我在控制台中尝试了该方法。当我将变量替换为整数时,它按预期工作,但该变量没有。我试图把它作为一个全球变量,没有任何区别。我尝试使用轻击命令,而不是轻轻点击按钮,这又一次失败了。

irb(main):006:0> y = query("UIButtonLabel marked:'SUBMIT'")[0]["rect"]["center_y"] 
218.5 
irb(main):007:0> y 
218.5 
irb(main):008:0> uia('target.dragFromToForDuration({x:"481.5", y:"#{y}"}, {x:"350", y:"#{y}"}, "1")') 
{ 
    "status" => "success", 
    "index" => 1 
} 

有没有办法以这种方式引用此方法中的变量?

回答

0

使用''创建的字符串不会执行插值。所以你的'...#{y}...'是真的会有它的文字。

您可以使用双引号(""),但你不得不逃离一切:

uia("target.dragFromToForDuration({x:\"481.5\", y:\"#{y}\"}, {x:\"350\", y:\"#{y}\"}, \"1\")") 

您可以使用%Q避免转义:

uia(%Q(target.dragFromToForDuration({x:"481.5", y:"#{y}"}, {x:"350", y:"#{y}"}, "1"))) 

我不知道这个库,但它也可能像这样工作:

uia("target.dragFromToForDuration({x:'481.5', y:'#{y}'}, {x:'350', y:'#{y}'}, '1')") 
+0

我用%Q,它工作得很好,t去揍你! – 2014-10-30 19:49:20

相关问题