app元素属性
提示前是p代表属性,m代表方法
获取driver属性
-获取包名
-获取当前app页面的名称
-获取源代码
在app端获取到的是一个xml页面
-获取手机屏幕分辨率(尺寸)
获取到的是一个字典
-获取当前页面的状态(原生/混合)
原生界面:
混合界面:
获取元素属性
-获取元素文本
-获取元素起始x,y坐标(左上角)
结果是一个字典
-获取元素尺寸,宽:width 高:height,起始点x,y坐标
结果是一个字典
引申:坐标
元素的坐标
可以通过获取元素的起始坐标,求出元素的中间坐标
页面的坐标
通过get_window_size获取,结果是结束点的坐标
所以可以通过百分比,来获取滑动屏幕的起始和结束坐标点,
比如从屏幕左侧滑到右侧,可以获取width的百分之80的位置(width*0.8)作为起始点,height不变,width的百分之20的位置(width*0.2)作为结束点,使用driver.swipe()方法滑动
app操作
app元素的操作跟web基本相同
如,click(),send_keys()等方法,之后只介绍手机上专有的操作,如滑动,缩放等
-点击操作
这是手机全局的点击操作,跟元素点击有所不同
传入参数是坐标,是一个列表嵌套元组,可以同时点击多个坐标,duration是按压时长
滑动
通过driver.wipe()方法
必传的参数有:起始点的x,y坐标,结束点的x,y坐标. 可选参数有:duration,表示滑动的时长
使用滑动的步骤:
1,获取屏幕的尺寸 width和height
2,从右向左滑
3,封装到basepage
单指/多指操作
相当于web里的鼠标事件
导入类
从TouchAction创建对象,相当于创建ActionChains对象
-点击 tap
跟driver.tap()不同,事件的tap传入的参数可以是一个元素,或者是一个坐标,可选参数count是点击次数
最后要加perform()
-按压press
传入的参数可以是一个元素,或者是一个坐标,通常结合move_to()方法,移动到某个元素或者x,y坐标,然后最后release()松开手指
最后要加perform()
-长按long_press
跟press一样用法,参数可以选择duration,表示按压的时长
通过MutiAction类实现缩放操作
1,获取第一个手指的操作
2,获取第二个手指的操作
3,创建MutiAction类的对象
4,使用add()方法,传入2个动作
5,执行操作
目前只能实现百度地图等app页面放大缩小,图片缩放还没能实现
进入指定页面
相当于web中进入指定url
先获取当前页面的activity和包名
adb shell dumpsys activity activities | findstr mResumedActivity
使用start_activity方法进入指定页面
参数传入包名和activity名称
注意:
如果在初始化driver的时候,caps不传入包名和activity,取而代之是使用start_activtity方法进入app页面的话,程序运行完毕后不能自动关闭app
快捷键操作
快捷键kecode值表
Appium---Android的keycode键值 - 简书
把常用的快捷键封装到一个类或者basepage,增加可读性
toast弹窗
在web当中,可以按f8暂停,然后定位元素,但是在app中不能暂停
这时候我们要根据组件名称 class名称为android.widget.Toast获取,一个页面只会出现一个toast
方法1: 根据class
方法2:根据text属性
获取toast的text文本
注意:toast元素wait只能用present_of_element_located,不能用visibility
要获取toast,必须符合一下条件:
1,appium server 要1.63以上
2,caps要定义automationName的值为UiAutomator2 最新版的appium默认使用UiAutomator2
3,UiAutomator2只支持安卓版本 5.0+
4,jdk1.8.64以上.配置JAVA_HOME环境变量