找到原因了,appium 的 moteTo 在 android 的实现是当传入的是纯坐标时,把坐标值认为是 offset。
相关代码在 https://github.com/appium/appium/blob/74c4ec1a20c1f20cd2ef0b821d314b02957c82bb/lib/devices/android/android-controller.js 中的 androidController.parseTouch
方法。
关键代码:
...
// expects absolute coordinates, so we need to save these as offsets
// and then translate when everything is done
options.offset = true;
options.x = (gesture.options.x || 0);
options.y = (gesture.options.y || 0);
touchStateObject = {
action: gesture.action,
options: options,
timeOffset: 0.005,
};
touchStateObjects.push(touchStateObject);
done();
...
if (state.options.offset && prevPos) {
// the current position is an offset
state.options.x += prevPos.x;
state.options.y += prevPos.y;
}
...
解决方案是给 moveTo 传入 element 对象(你帖子正文的例子里就可以这么用),而不是传入坐标值。
PS:Java-client 的方法说明里有提到这个:
https://github.com/appium/java-client/commit/d7874ca6b93f3e72f612402beea61964033ce9fe#diff-970f723bf2aa8111d5817a3de004cc13
#15 楼 @face_south 。。。下次有机会再来哈。
#13 楼 @face_south 你要从哪过来?
刚去点赞了。
#10 楼 @lihuazhang 人数应该不少,只是我们找到的不多。后面我们会联系更多讲师,也欢迎大家给我们推荐好的讲师!
#3 楼 @yuwuhen333 这是个不错的办法!赞!
#6 楼 @yuwuhen333 不客气~
#5 楼 @seveniruby 哈哈,谢谢。其实也不深啦,我要学习的东西还有很多。
#1 楼 @seveniruby 对的,看起来 google 其实就是想收回这个权限,让普通 app 用不了。所以我也只是建议在文档里加警告。
#6 楼 @wanglitingmitty :plus1: 好方法!我现在看书主要是消磨搭地铁的时间。。。所以每天固定 2 个小时左右看书时间。
能说具体点吗?
我觉得和你代码的写法或者运行方式有关。否则从你的描述看不出哪里出问题。
PS:为啥要在 A 里 import B ?是为了什么目的?
#4 楼 @alex_sheng 嗯嗯,共勉。书买了不看的话放着也占地方。
#12 楼 @alex_sheng 哈哈,不要太大压力,其实也不是真的 4 个小时不间断学习啦,中途走一下神是会有的。
赞!对 逐鹿 X 团队分享使用 DaoCloud 持续交付的实战经验 这个很感兴趣!
可惜人不在上海,来不了。。。
Xcode 7.0 上没试过录制。
卡死的话报啥错?