0

左にスワイプして画面から多数のレコードを削除する簡単なルーチンがあります。特定の状態、つまり送信準備ができているレコードのみを削除します。一番上のレコードは必ずしもその状態にあるとは限らないため、固定の y 座標は使用できません。代わりに、その状態で見つけた最初のレコードの y 座標を使用します。

実行しようとしているコードは次のとおりです。

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
}

この方法でこのメソッド内の変数を参照する方法はありますか?

4

1 に答える 1