移动自动化-swipe、scroll、drag、高级手势等
swipe 滑动事件
使用方法:driver.swipe(strat_x,start_y,end_x,end_y)
swipe通过driver使用
传入起始的位置x和y,和结束的位置x和y
时间参数,越长滑动的越精准
默认的时间,大约是0.8s
获取当前的时间戳time.time()
时间戳的含义是 从1970年到现在过了多少秒
scroll滑动事件
从一个元素滑动到另一元素,直到页面自动停止
方法:scroll(origin_el,destination_el)
和swipe相比 都存在一定的“惯性”
drag拖拽事件
从一个元素滑动到另一个元素,第二个元素替代第一个元素原本屏幕上的位置
方法:drag_and_drop(origin_el,destination_el)
scroll和drag的区别:drag没有“惯性”,都是使用元素进行传参
和swipe相比,drag传元素,swipe传坐标,当swipe的时间足够长的时候,和drag效果相同
ps:
1、find_element如果找到了某个元素 会将具体位置缓存在系统中,只要不重新获取,就算已经跑出了屏幕外,也会认为元素在之前缓存的位置
2、只要某个元素在屏幕中出现了一部分,find_element也会正常找到
高级手势TouchAction
是appiumDriver的辅助类,主要针对手势操作、比如滑动、长按、拖动等
原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行
1、手指轻敲操作
模拟手指轻敲一下屏幕操作,方法:tap(element=None,x=None,y=None)
方法:perform() #发送命令到服务器执行操作
所有手势都要通过perform()执行
2、手指按下和抬起操作
方法:press(elment=None,x=None,y=None)
方法:release() #结束动作,手指离开屏幕
参数:1、element:被定位到的元素
2、x:x轴的坐标
3、y:y轴的坐标
3、长按
long_press
4、手指移动操作
模拟手机滑动操作,如解锁
方法:move_to(element=None,x=None,y=None)
参数:
1、x:相对于前一个元素的x轴偏移量
2、y:相对于前一个元素的y轴偏移量
5、什么是链条
一堆动作 通过 动作.动作.动作.perform 这一串动作就是链条
6、获取手机时间
方法:device_time
代码实现:print(driver.driver_time)
7、手机的高宽
8、发送键到设备
模拟系统键值的操作,比如操作home键,音量键,返回键等
方法:keyevent(keycode,metastate=None)
方法:press_keycode(keycode,metastate=None):
参数:
keycode 发送给设备的关键代码
metastate 关于被发送的关键代码的元信息,一般为默认值
代码实现:
for i in range(3):
driver.keyevent(24)
9、操作手机通知栏
打开手机的通知栏,可以获取通知栏的相关信息和元素操作
方法:open_notifications()
代码实现:driver.open_notifications()
关闭导航栏,点击返回按钮
10、获取手机当前网络
方法:network_connection
代码实现:print(driver.network_connection)
11、手机截图
代码实现:import os
driver.get_screenshot_as_file(os.getcwd()+os.sep+'./screen.png')
执行结果:当前目录下会生成screen.png文件