我需要测试媒体播放器的功能。没有任何问题,但我无法弄清楚如何拖放滑块处理程序来改变当前的轨道播放位置。
我尝试过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的drag
或drag_coordinates
那样做吗?
我尝试过这些命令:
send_uia_command :command => "dragFromToForDuration({startOffset:#{from}, endOffset:#{to}, duration:4});"
(其中from
是滑块处理程序的实际位置,而to
是from
,center_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命令一无所知所以我可能做了一些愚蠢的错误。
答案 0 :(得分:0)
我终于找到了解决方案。
我只是以错误的方式使用方法dragFromToForDuration
。
现在我执行以下命令:
uia("target.dragFromToForDuration({x:'#{start_x}', y:'#{start_y}'}, {x:'#{end_x}', y:'#{end_y}'}, 2)")
(其中start_x
和start_y
是起点坐标,end_x
和end_y
表示拖动应该结束的位置)。它对我来说很完美。
我决定将其发布在这里,以帮助人们快速找到解决方案,而不是像我那样犯下如此愚蠢的错误:)