Appium 关于移动端定位到指定元素滑动操作的问题

枫叶 · 2017年11月03日 · 最后由 枫叶 回复于 2017年11月06日 · 3427 次阅读

最近关于移动端自动化学习过程中遇到一个问题,就是指定控件的上下滑动的操作该如何处理,网上也搜索了很久,大多是介绍整个屏幕的上下左右的滑动的,很少有比较详细的关于指定元素或页面里面控件的上下滑动操作的介绍,所以特地来这里寻求大神的帮助,希望有知道或了解的大神能给出相应的解决方法,万分感谢,下面截图中已注明这次需要实现的操作,就是操作一个时间控件的上下滑动来达到选择时间的功能:

共收到 16 条回复 时间 点赞

话说没有哪个大神来答疑解惑吗

有些时间选择控件是可以直接使用 send_keys() 方法,定位到输入框就可以了。(当然时间构造的要和点击选择的结果一样)

now = datetime.datetime.now()
add_date = datetime.timedelta(days = 2)
date = (now + add_date).strftime('%Y-%m-%d')

如果不行的话,只能去看一下 actionchains 方法。

疯的蜗牛 回复

send_keys 不行,我试过了

枫叶 回复

那你尝试使用 actionchains 里面 click_and_hold() 和 move_to_element() 或者 move_to_offset() 等等 拿不到具体页面也没法直接给你代码。。 =,=

疯的蜗牛 回复

搜了一下你说的 actionchains,是模拟鼠标对页面的操作对吧,我是想模拟移动端滑动屏幕,不知道能不能通用

枫叶 回复

😂 其实对手机来说手指上划的操作和你鼠标点着不放拖动的效果是一样的。 因为微信页面一般也是一个 H5 页面。 一开始我就看了标题以为是 selenium 然后发现是 appnium 哈哈,溜了。不过可以发我一个页面地址让我去试试么。

疯的蜗牛 回复

这个页面估计不好给,就是有链接还要注册账号,有账号也不一定进的去这个页面,这是我们公司的一个 OA 流程编辑页面,所以确实不好给,我自己找找找方法吧

疯的蜗牛 回复

不过还是很感谢哈

这个是 pickerwheel 还是自定义的控件?如果是 pickerwheel 的话,讲道理可以 sendKeys

枫叶 #10 · 2017年11月06日 Author

send_keys 是可以填入数据,但是我还要根据这个时间判断请假时长,所以必须点击一下截图中那个 “完成” 的按钮才能触发请求,获取时长

枫叶 回复

你这条回的,都不知道你想干嘛了。。滑动解决了,其他不就是取值了么

枫叶 #12 · 2017年11月06日 Author
vegetableBird 回复

就是说我要填入一个开始时间和结束时间,当输入二者时,要点击那个 “完成” 才能触发请求,计算出这个时长,如果我只是 send_keys 输入时间的话,就没有点击 “完成” 那个按钮的操作的,也就无法触发请求去获取时长,也就无法完成业务所需的发起流程,我这边就是想实现滑动屏幕获取一个时间哈,如截图中所示

枫叶 #13 · 2017年11月06日 Author
vegetableBird 回复

问题是滑动的还没找到方法解决。。。

枫叶 回复

1、sendKeys 完后,点完成 btn,不行么
2、按你滑动思路走:现在你这个截图,应该是三个 pickerWheel,你获取他的高度减掉 pickerWheel 的 navibar 的高度、宽度、坐标,然后跟算出来的宽,高坐标来滑动。问题是:你不好控制滑了多少。

枫叶 #15 · 2017年11月06日 Author
vegetableBird 回复

按照上一楼的回复我直接使用模拟鼠标拖动元素的反法,可以实现滑动了,估计是 h5 页面鼠标操作和滑动屏幕是通用的😁 ,不过问题最终是解决了,也很感谢你提供的思路,先 sendkeys 的话那我还是要 call 起那个选择时间的控件,那之前 sendkeys 输入的值又会改变为当前时间,所以应该是达不到我的要求的,不过也感谢回复哈

枫叶 #16 · 2017年11月06日 Author
疯的蜗牛 回复

感谢提供的方法,已经解决问题了,看来 h5 页面是通用的,对应模拟鼠标的操作👍

枫叶 关闭了讨论 11月06日 13:20
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册