测试人社区

求助:appium模拟手写轨迹划屏,为什么用x,y轴坐标形式的TouchAction的move_to,页面效果那么慢

TouchAction(driver).press(x=427, y=1557).
move_to(x=611, y=1678).move_to(x=653, y=1706).
move_to(x=752, y=1752).move_to(x=762, y=1766).
move_to(x=671, y=1865).move_to(x=581, y=1947).
move_to(x=370, y=2250).release().perform()
这样的模拟轨迹,为什么在安卓手机上看轨迹画的特别特别特别的慢,哪位大神帮忙回答一下~

是不是机器太卡啦

手机不卡,试了几个环境和手机都是一样,安卓的很慢,iOS 的不慢,请问之前有做过类似的吗,可以共享一下部分实现代码吗? :handshake:

ios:https://github.com/appium/appium-ios-driver/blob/75ee47e32295a00fddad56af45d8479b45f5020e/lib/commands/gesture.js#L505:10

android uiautomator

move 的时间由 swipeSteps 和 OTION_EVENT_INJECTION_DELAY_MILLIS 决定, 每一个 touchMove 之间都 5ms 延迟(OTION_EVENT_INJECTION_DELAY_MILLIS 默认为 5 ):

那么 swipSteps 由谁来决定就是关键,swipSteps 数量越大, move 执行的越慢(我要赶车了,后面有时间再找吧)。

有的人问,有没有可能 touchMove 的原因, touchMove 调用的是 MotionEvent.obtain ,这是 android 内部的代码(吐槽一下, android studio 下了半天才下完),貌似这段代码没有什么延迟问题,速度还是由上层代码决定:

android 官方文档说的比较详细:

感谢感谢,思路太好了,多看源码 :+1: :+1:,像你学习 :handshake: