mac+appium+java+maven+testng app自动化
一:adb常用命令 (常规元素定位)
adb devices检测设备
adb shell 进入到手机的shell模式
adb pull/push 和手机里面的文件进行交互
adb install
adb uninstall
adb start-server
adb kill-server
adb shell dumpsys activity | find "mFocusedActivity"
adb shell am start -n 包名/入口 (aapt dump badging)启动app
adb shell pm list packages 显示当前系统里面所有应用程序包名
adb shell pm clear 包名
adb shell input tap 坐标 点击
二:Hybrid&webview
Hybrid混合应用程序,在应用程序中嵌入了webview,通过webview访问网页
webview是一个基于webkit引擎,展现web页面的控件
作用:显示和渲染洁面
直接使用html(网络或者apk资源包assets中)作布局
可和JavaScript交互调用
三:native app
传统的原生app开发模式,android基于java语言,底层调用Goolge提供的Api,IOS基于Objective c或Swift,底层调用Apple官方提供的Api
tips:1.在手机/模拟器中点击关于手机中的版本号5下,出来开发者选项
2.在开发者选项中勾选上显示布局边界
3.如果是html的界面,那界面不会有布局边界显示,如有则说明是native的界面
四:web app
五:hybrid app
六:ActivityName&PackageName
PackageName(包名)
应用的唯一身份标识,系统通过包名识别不同的应用,如两个相同包名的应用在按照时会提示覆盖
ActivityName(类名)
activity:android四大组件之一,就是一个界面,和用户进行交互,如桌面(Launcher),activity通过setContentView方法加载布局文件,使得布局文件能够显示在手机上
tips:
根据adb shell dumpsys activity | find "mFocusedActivity"可以找到包名和前台正在运行的Activity
七:布局文件activity_main.xml
命名空间android:用于android系统定义的一些属性
八:android布局类型
框架布局(FrameLayout):所有控件都被放置在最左上的区域
下一个子控件会重叠覆盖上一个子控件
线性布局(LinearLayout):控件的排序方式:垂直/水平
绝对布局(AbsoluteLayout):采用坐标轴的方式定位控件
左上角原点(0,0),往右x轴递增,往下y轴递增
相对布局(RelativeLayout):根据参照物(某控件)的位置,来确定控件的位置
表格布局(TableLayout):通过表格方式(行,列)布局控件位置
九:常见控件
TextView :文本控件,展示文本/文字
EditText:可编辑输入框,用于接受用户输入的数据
Button:按钮,用户通过点击button触发一系列的事件
CheckBox:复选/多选按钮
ImageView:图片控件,用于显示图片
ProgressBar:加载进度条,表示正在加载一些数据
控件属性01
index :索引
text :文本描述,新版本需要使用:findElementByAndroidUIAutomator("newUiSelector().text(\"哈哈哈哈\")")
resource-id : 控件资源的id,有的控件/布局可能没有
控件属性02
content-desc
内容描述(为残疾人设置的属性,如使用talkback,会发出content-desc中描述信息声音)
findElementByAndroidUIAutomator("newUiSelector().description(\"哈哈哈哈\")")
bounds 控件/布局界限 [480 1179]描述控件/布局的起始坐标:x,y轴 [720 1280]描述控件/布局的终止坐标:x,y轴
十:appium启动日志
十一:项目创建
maven项目构建
groupId:com.xxx
添加依赖
资源仓库:www.mvnrepository.com
在src/text/java目录中创建一个包 com.xxx.xxx
新建类
十二:appium元素定位
app自动化测试重点环节就是元素定位,只有准确定位对应元素我们才能对相应的元素进行操作,如点击,输入,滑动等等,appium提供了很多
元素定位的api,like id,text,className
id定位:一个页面如果有多个相同id,获取到的元素结果为一个集合,需要用List接受。
十三:手势操作
上下左右滑屏
放大缩小
多点触摸
appium提供的手势API
swipe --滑动
zoom --放大
pinch --缩小
tap --点点