拖放滑块处理程序以滚动轨道

时间:2014-08-22 10:27:08

标签: ios ruby ui-automation calabash calabash-ios

我需要测试媒体播放器的功能。没有任何问题,但我无法弄清楚如何拖放滑块处理程序来改变当前的轨道播放位置。

我尝试过change_slider_value_to函数,但它对我不起作用。

当我query "slider"时,它会返回一个空集,当我query "GFSliderView"它返回时:

irb(main):014:0> query "GFSliderView"
[
  [0] {
            "class" => "GFSliderView",
               "id" => nil,
             "rect" => {
          "center_x" => 160,
                 "y" => 73,
             "width" => 176,
                 "x" => 72,
          "center_y" => 81.5,
            "height" => 17
      },
         "frame" => {
               "y" => 9,
           "width" => 176,
               "x" => 72,
          "height" => 17
      },
            "label" => nil,
      "description" => "<GFSliderView: 0x1280db60; frame = (72 9; 176 17); autoresize = W+TM+BM; layer = <CALayer: 0x1280da90>>"
  }
]

在iOS上有什么方法可以像calabash-android的dragdrag_coordinates那样做吗?

我尝试过这些命令:

send_uia_command :command => "dragFromToForDuration({startOffset:#{from}, endOffset:#{to}, duration:4});"

(其中from是滑块处理程序的实际位置,而tofromcenter_x值增加了)

uia('target.mainWindow().sliders()[0].dragToValue(0.5);')

change_slider_value_to "SliderHandle.png", 0.2

map("GFSliderView", :changeslider, 0.2)

(也尝试使用其他值,如10,0.8或100)

他们都没有工作 - 其中一些导致应用程序在模拟器中崩溃,其中一些只是让控制台卡住了。

我使用Calabash并不是很先进(我正在使用它近两个月)而且我对应用程序开发和UIA命令一无所知所以我可能做了一些愚蠢的错误。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。 我只是以错误的方式使用方法dragFromToForDuration

现在我执行以下命令:

uia("target.dragFromToForDuration({x:'#{start_x}', y:'#{start_y}'}, {x:'#{end_x}', y:'#{end_y}'}, 2)")

(其中start_xstart_y是起点坐标,end_xend_y表示拖动应该结束的位置)。它对我来说很完美。

我决定将其发布在这里,以帮助人们快速找到解决方案,而不是像我那样犯下如此愚蠢的错误:)