手机操作

一、目标

事件操作API
手势高级操作(手指)
手机操作(手机自身硬件功能操作)

二、事件操作API
2.1 基于坐标点滑动
方法:driver.swipe(start_x,strat_y,end_x,end_y,duration=None)

1. duration:为持续时间/毫秒
2. swipe是基于两个坐标,而非元素(只能是两个坐标点)

more = driver.find_element_by_xpath('//*[contains(@text, "更多")]')
save = driver.find_element_by_xpath('//*[contains(@text, "存储")]')

save = save.location
more = more.location
# print(lan.location)
# {'x': 288, 'y': 609}
driver.swipe(save.get('x'), save.get('y'), more.get('x'), more.get('y'), duration=2000)


2.2 基于元素滚动
方法:driver.scroll(start_element,end_element)

driver.scroll(save, more)

注意:
1. scroll方法是基于两元素之间滚动
2. 滚动的特性:自动停止
3. 页面不是特别长的时候,需要滚动到最后页面,可以使用此方法。

2.3 基于元素拖拽
方法: driver.drag_and_drop(strat_element,end_element)

driver.drag_and_drop(save, more)

注意:
1. 基于两个元素之间的操作
2. 将第一个元素拖拽到第二个元素(替换第二个元素的位置)
3. 精准拖拽(推荐)


2.4 应用置于后台
方法:driver.background_app(时间/秒)
应用场景:热启动
注意:
1. 把应用置于后台指定时间,在释放出来
2. 时间单位为秒


三、手势操作
1 appium框架将所有手势操作都封装在TouchAction类中(轻敲、按下、弹起、等待、移动、执行)

1. 轻敲
1) TouchAction(driver).tap(element) # 基于元素
2) TouchAction(driver).tap(x=xxx,y=xxx) # 基于坐标点
提示:
1. 此方法结果和click方面没有任何区别
2. 此方法重点是测试的模拟手势去点击屏幕。


2. 按下
1). press(element) #基于元素
2). press(x=xxx,y=xxx) #基于元素坐标
3. 释放
方法:release()
4. 等待
方法:wait(xx/ms)
提示:单位为毫秒

lan = driver.find_element_by_xpath('//*[@text="WLAN"]')
TouchAction(driver).press(lan).wait(3000).release().perform()


5. 长按
方法:long_press(element,duration=xx/ms)
提示:long_press=press(element).wait(xx/ms)

TouchAction(driver).long_press(lan, duration=3000).release().perform()


5. 移动
1). move_to(element) # 基于元素
2). move_to(x=x,y=y) #基于坐标
注意:
1. 基于元素坐标时,1.6.2版本之后使用的上个坐标点的偏移量
偏移量:九宫格

TouchAction(driver).long_press(x=239, y=850, duration=100).move_to(x=718-239, y=0).wait(100).\
move_to(x=1200-718, y=0).wait(100).move_to(x=718-1200, y=1332-850).wait(100).move_to(x=239-718, y=1808-1332).\
wait(100).move_to(x=718-239, y=0).wait(100).move_to(x=1200-718, y=0).release().perform()

6. 执行
1. 以上所有方法都必须调用perform()方法才能执行
2. 以上所有方法都在TouchAciton类中,所以必须导包(Ctil+Alt+空格/Alt+回车)

四、手机操作API
4.1 获取手机时间
方法:driver.device_time
注意:
1). device_time没有括号
4.2 获取手机像素
方法: driver.get_window_size()
注意:
1) 返回结果为字典。如:{'height': 2560, 'width': 1440}
2) 宽度为屏幕尺寸,像素为:屏幕像素点(分辨率)
4.3 发送键码到设备
方法:driver.keyevent("键码")
键码参考:http://developer.android.com/reference/android/view/KeyEvent.html
4.4 打开通知栏
方法:open_notifications()
测点:
1. 测试应用程序通知功能是否可用
2. 测试通知栏内消息是否能正确跳转到指定地址
4.5 获取手机网络类型及设置
方法:
1). 获取手机网络方法 driver.network_connection()
2). 设置手机网络方法 driver.set_network_connection(网络类型)
(0:None 1:飞行模式 2:wifi 4:数据类型 6:全部(data、wifi))
注意:
1. 设置网络类型时,必须有root权限,如果没有,会报ADB停止运行,并且让授权
4.5 手机截屏 
方法:driver.get_screenshot_as_file(ImagePath)
(ImagePath: 图片保存目录及名称 如:../Image/screen.png)
应用场景:
断言失败调用截图

posted @ 2021-11-24 23:34  zxy_ang  阅读(283)  评论(0)    收藏  举报