App自动化测试之Java平台下使用Appium测试App(二)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/104328480

三、使用 Java 语言编写测试脚本

8.模拟按键

  • driver.pressKeyCode(keycode)
    ✔     必须使用 AndroidDriver
    ✔     基本
           ★     KEYCODE_0 按键’0’ 7
           ★     KEYCODE_1 按键’1’ 8
           ★     KEYCODE_2 按键’2’ 9
           ★     KEYCODE_3 按键’3’ 10
           ★     KEYCODE_4 按键’4’ 11
           ★     KEYCODE_5 按键’5’ 12
           ★     KEYCODE_6 按键’6’ 13
           ★     KEYCODE_7 按键’7’ 14
           ★     KEYCODE_8 按键’8’ 15
           ★     KEYCODE_9 按键’9’ 16
           ★     KEYCODE_A 按键’A’ 29
           ★     KEYCODE_B 按键’B’ 30
           ★     KEYCODE_C 按键’C’ 31
           ★     KEYCODE_D 按键’D’ 32
           ★     KEYCODE_E 按键’E’ 33
           ★     KEYCODE_F 按键’F’ 34
           ★     KEYCODE_G 按键’G’ 35
           ★     KEYCODE_H 按键’H’ 36
           ★     KEYCODE_I 按键’I’ 37
           ★     KEYCODE_J 按键’J’ 38
           ★     KEYCODE_K 按键’K’ 39
           ★     KEYCODE_L 按键’L’ 40
           ★     KEYCODE_M 按键’M’ 41
           ★     KEYCODE_N 按键’N’ 42
           ★     KEYCODE_O 按键’O’ 43
           ★     KEYCODE_P 按键’P’ 44
           ★     KEYCODE_Q 按键’Q’ 45
           ★     KEYCODE_R 按键’R’ 46
           ★     KEYCODE_S 按键’S’ 47
           ★     KEYCODE_T 按键’T’ 48
           ★     KEYCODE_U 按键’U’ 49
           ★     KEYCODE_V 按键’V’ 50
           ★     KEYCODE_W 按键’W’ 51
           ★     KEYCODE_X 按键’X’ 52
           ★     KEYCODE_Y 按键’Y’ 53
           ★     KEYCODE_Z 按键’Z’ 54
    ✔     功能键
           ★     KEYCODE_CALL 拨号键 5
           ★     KEYCODE_ENDCALL 挂机键 6
           ★     KEYCODE_HOME 按键 Home 3
           ★     KEYCODE_MENU 菜单键 82
           ★     KEYCODE_BACK 返回键 4
           ★     KEYCODE_SEARCH 搜索键 84
           ★     KEYCODE_CAMERA 拍照键 27
           ★     KEYCODE_FOCUS 拍照对焦键 80
           ★     KEYCODE_POWER 电源键 26
           ★     KEYCODE_NOTIFICATION 通知键 83
           ★     KEYCODE_MUTE 话筒静音键 91
           ★     KEYCODE_VOLUME_MUTE 扬声器静音键 164
           ★     KEYCODE_VOLUME_UP 音量增加键 24
           ★     KEYCODE_VOLUME_DOWN 音量减小键 25
    ✔     控制键
           ★     KEYCODE_ENTER 回车键 66
           ★     KEYCODE_ESCAPE ESC 键 111
           ★     KEYCODE_DPAD_CENTER 导航键 确定键 23
           ★     KEYCODE_DPAD_UP 导航键 向上 19
           ★     KEYCODE_DPAD_DOWN 导航键 向下 20
           ★     KEYCODE_DPAD_LEFT 导航键 向左 21
           ★     KEYCODE_DPAD_RIGHT 导航键 向右 22
           ★     KEYCODE_MOVE_HOME 光标移动到开始键 122
           ★     KEYCODE_MOVE_END 光标移动到末尾键 123
           ★     KEYCODE_PAGE_UP 向上翻页键 92
           ★     KEYCODE_PAGE_DOWN 向下翻页键 93
           ★     KEYCODE_DEL 退格键 67
           ★     KEYCODE_FORWARD_DEL 删除键 112
           ★     KEYCODE_INSERT 插入键 124
           ★     KEYCODE_TAB Tab 键 61
           ★     KEYCODE_NUM_LOCK 小键盘锁 143
           ★     KEYCODE_CAPS_LOCK 大写锁定键 115
           ★     KEYCODE_BREAK Break/Pause 键 121
           ★     KEYCODE_SCROLL_LOCK 滚动锁定键 116
           ★     KEYCODE_ZOOM_IN 放大键 168
           ★     KEYCODE_ZOOM_OUT 缩小键 169
    ✔     组合键
           ★     KEYCODE_ALT_LEFT Alt+Left
           ★     KEYCODE_ALT_RIGHT Alt+Right
           ★     KEYCODE_CTRL_LEFT Control+Left
           ★     KEYCODE_CTRL_RIGHT Control+Right
           ★     KEYCODE_SHIFT_LEFT Shift+Left
           ★     KEYCODE_SHIFT_RIGHT Shift+Right

  • 那么在脚本中,进行定位=按键元素并进行点击操作,可以换成使用pressKeyCode方法输入66则表示回车也可以进行计算器运行操作,需要注意的是要将声明的driver变量换成AndroidDriver对象才可以使用该方法
    在这里插入图片描述

  • 运行脚本,测试通过,没有问题
    在这里插入图片描述

9.参数化

9.1 使用数组返回参数

在这里插入图片描述

9.2 使用参数

  • 在脚本测试方法中调用getData获取二维数组数据,然后接收数据参数,对运算符进行判断赋值,替换脚本中的参数即可
    在这里插入图片描述
  • 运行脚本,测试全部通过
    在这里插入图片描述

9.3 使用文件中的数据参数化

  • 准备被测数据
    在这里插入图片描述
  • 编写代码,读取E盘下的calc.txt文本中的数据,并存到二维数组中进行返回给测试方法
    在这里插入图片描述
  • 运行脚本,用例执行成功,测试通过
    在这里插入图片描述

9.4 定义获得参数的单独类和方法

  • 新建一个类,将getData获取参数方法拷贝到这个新建的类中
    在这里插入图片描述
  • 然后需要在测试方法@Test注解中,声明dataProviderClass属性的值为新建的类
    在这里插入图片描述
  • 再次执行测试,也是没有问题的
    在这里插入图片描述

10.生成测试报告

说明:在《功能自动化测试之TestNg测试框架(二)》该篇文章中详细说明TestNG两种测试报告(高端的和普通的),这里博主使用普通的

  • 测试报告默认存储位置
    ✔     Java 项目名\test-output

  • 可以自己编写并优化 TestReport.java

  • 测试类中添加监听器@Listeners({TestReport.class})即可

  • 将测试报告文件TestReport.java拷贝到test包下
    在这里插入图片描述

  • 查看TestNG框架生成的test-output目录下的测试报告
    在这里插入图片描述

  • 回到测试类,添加指定生成测试报告文件注解
    在这里插入图片描述- 运行脚本
    在这里插入图片描述

  • 在test-output目录下打开生成的日期格式的html测试报告文件
    在这里插入图片描述

四、adb 命令的使用

1.查看 adb 版本

  • adb version
    ✔     android debug bridge 即 android 调试桥。
    在这里插入图片描述

2.显示所有的设备

  • adb devices
    在这里插入图片描述

3.安装和卸载 App

  • adb install .apk 文件名
    ✔     cmd 下输入
    ✔     apk 文件名即程序包名,程序名中不要使用汉字。
    在这里插入图片描述
  • 卸载 App
    ✔     adb uninstall 完整包名
           ★     包名不是 apk 文件名
    在这里插入图片描述
    在这里插入图片描述

4.查看手机操作系统的版本号

在这里插入图片描述

5.显示设备中的包以及包的启动项

  • 显示设备中所有的包
    ✔     adb shell pm list packages
    在这里插入图片描述

  • 查找某个包
    ✔     adb shell pm list packages | findstr 查找关键字
    在这里插入图片描述

  • 查找启动项
    ✔     adb shell dumpsys activity | findstr “关键字”
           ★     TaskRecord 后面的内容即为查询到的记录
    ✔     adb shell dumpsys window w | findstr \/ | findstr name=
           ★     需要开启 app
           ★     写法最优

  • 在上一篇博客中,博主通过最反锁的方式获取计算器的启动项名,执行adb logcat>D:/log.txt,获取app日志,从日志查找关键字Displayed来获取启动项名,这样太麻烦了,现在使用第一种adb命令直接获取启动项名.Calculator
    在这里插入图片描述

  • 第二种方式查找出来的更优质,不会像以上那么多数据,但是需要在Android模拟器中打开计算器,命令中的/其实是多加了一个\进行反转义的
    在这里插入图片描述

6.在指定设备中运行命令

  • adb -s 设备名 shell 命令,因为目前连接的设备只有这个Android虚拟机,所以指不指定都无所谓的
    在这里插入图片描述

7.adb 服务器的开关

  • adb start-server
  • adb kill-server
    在这里插入图片描述

五、升级 Appium

说明:博主将在虚拟机中演示安装,在真机中进行操作演示,之前在《移动端自动化实战》中使用的都是高版本的

1.安装 nodejs、NDP、vc_redist、jdk

  • NDP 至少 4.7 版。
    在这里插入图片描述
  • nodejs、vc_redist、jdk之前已经安装过了,就不安装了
    在这里插入图片描述

2.安装 Android Studio

  • android sdutio 是谷歌推出的一个 Android 集成开发工具。
  • 现已将 SDK(software development kit)集成到 AS 中。
  • 设置 Android 环境变量
    ✔     ANDROID_HOME:e:\android\android-sdk
           ★     最好大写,否则可能不被 Appium 识别
    ✔     PATH:;%ANDROID_HOME%\platform-tools
           ★     adb.exe 所在目录
    在这里插入图片描述
  • 打开Android Studio后,进行自义定设置
    在这里插入图片描述
  • 选择主题
    在这里插入图片描述
  • 因为之前安装过Android SDK,所有直接下一步,如果不是升级SDK那么就进行下载安装并指定sdk目录
    在这里插入图片描述
  • 安装完成Android Studio也就是升级Android SDK后,打开Android Studio在主页上面点击Configure,可以看到AVD和SDK Manager
    在这里插入图片描述
  • 打开AVD Manager就能看到之前老版本中添加的虚拟机
    在这里插入图片描述
  • 打开SDK Manager就能看到之前老版本下载的Android操作系统
    在这里插入图片描述
  • 那么在AVD Manager中创建虚拟设备,跟之前老版本不一样了
    在这里插入图片描述
  • 点击下一步,因为在老版本只下载了Android 4.4操作系统以及armeabi-v7a的cpu,所以只能看到这一个在这里插入图片描述
  • 点击下一步,其他不变,切换到高级选项,设置内存为512,完成即可
    在这里插入图片描述
  • 创建完成如下,这都是使用的是Android自带的模拟器创建的虚拟设备
    在这里插入图片描述

3.安装 Appium

  • 默认安装到 C 盘,不可修改安装路径
    在这里插入图片描述
  • 打开appium后,可以看到界面跟之前老版本的明显区别,在菜单中可以选择切换语言
    在这里插入图片描述
  • 启动appium服务器
    在这里插入图片描述

六、模拟器

说明:接下来的操作博主在本机电脑中进行演示

1.AVD 模拟器

  • Android 自带模拟器。

1.1 安装测试所需要的操作系统

  • Intel CPU
    ✔     下载 Intel 的系统镜像,运行速度可比 ARM 快 10 倍。
    在这里插入图片描述
  • 下载 HAXM
    ✔     Intel x86 Emulator Accelerator,对运行加速
    在这里插入图片描述
  • HAXM博主之前已经安装过了,所以这里安装列表显示SDK以及intel 64位镜像文件,两个都需要同意
    在这里插入图片描述
  • 等待下载
    在这里插入图片描述
  • 安装完成,最好重启下计算机
    在这里插入图片描述

1.2 创建模拟器

  • 打开AVD Manager创建虚拟设备(手机虚拟机)
    在这里插入图片描述

  • 选择分辨率比较低的Nexus4
    在这里插入图片描述

  • 看到以下Recommended为推荐安装
    在这里插入图片描述

  • 切换到x86 Images为全面下载好的操作系统
    在这里插入图片描述

  • 以上可能出错提示/dev/kvm is not found

  • 解决方法:安装低版本 HAXM

  • 高级选项中设置内存大小为512M
    在这里插入图片描述

  • 启动该虚拟设备
    在这里插入图片描述

  • 瞬间开机,比在前面虚拟机中对比速度不是一个档次
    在这里插入图片描述

1.3 编写测试脚本

1.3.1 查看设备信息
  • 查看设备信息
    ✔     查看设备名
    在这里插入图片描述
    ✔     查看系统版本
    在这里插入图片描述
    ✔     查看 App 名称和 App 启动项名称
    在这里插入图片描述
1.3.2 使用uiautomatorviewer发现元素
  • 使用 uiautomatorviewer 发现元素
    ✔     \Android\sdk\tools\bin\uiautomatorviewer.bat
    在这里插入图片描述
1.3.3 使用appium发现元素
  • 使用 appium 发现元素
    ✔     打开 App
    ✔     设置能力
    在这里插入图片描述
    添加监听设备的信息
    在这里插入图片描述
  • 点击start session开始会话,成功获取计算器元素
    在这里插入图片描述
1.3.4 编写测试脚本
  • 新建testNG类,编写如下代码
    在这里插入图片描述
  • 运行脚本,查看控制台打印结果
    在这里插入图片描述
1.3.5 添加断言

在这里插入图片描述

2.夜神模拟器

2.1 硬件要求

  • 建议 CPU 至少 2 核。
    在这里插入图片描述

2.2 模拟器设置

  • 开机后进行
  • 模拟器分辨率设置
    ✔     系统设置(齿轮图标)→高级设置→分辨率设置
           ★     择“手机版”
           ★     修改分辨率大小
    在这里插入图片描述
  • 查看系统信息
           ★     更多操作(“三”状图标)→系统信息
    在这里插入图片描述

2.3 创建模拟器

  • 多开模拟器
    ✔     创建模拟器后会自动下载并安装操作系统
    在这里插入图片描述
  • 下载完成后,不到100M,比Android自带的模拟器AVD Manager 小多了,AVD Manager动不动操作系统就是1个多G
    在这里插入图片描述
  • 同理设置手机版屏幕,然后将之前测试的计算器程序拖动到夜神模拟器中进行安装
    在这里插入图片描述

2.4 原生 App、Web APP、混合型 App

  • NativeApp
    ✔     即原生 App,基于本地操作系统运行。
    ✔     原生 APP 访问和兼容的能力比较好,可以支持在线或者离线消息推送或是进行本地资源访问、摄像、拨号、蓝牙、功能的调取。
    ✔     原生 APP 开发有许多的优势,如原生 APP 是针对不同的平台为用户提供不同的体验、可以节约宽带成本、访问本地资源、打开的速度更快并为用户提供最佳的用户体验和优质的用户界面等。
    ✔     每一种移动操作系统都需要独立的 NativeApp 开发项目,iphone 版本、Ipad版本、安卓版本。每种平台都需要独立的开发语言,比如 Java(Android), Objective-C(iOS)等。
    ✔     需要通过应用商店将原生 app 下载到手机上或移动终端上。以独立的应用程序运行,用户必须手动去下载并安装这些原生 App。用户可以自由地选择是否更新软件版本,所以会出现不同用户同时使用不同版本的情况。同时也会导致维护成本比较高。使用旧版本的用户无法体验新版本的完整功能。

  • Web App
    ✔     基于手机浏览器运行。
    ✔     类似于电脑上的网页。
    ✔     可以通过 HTML、 CSS 或者 JavaScript 来进行 Web APP 的开发,是一种框架型APP 开发模式(HTML5 APP 框架开发模式),具有跨平台的优势,该模式通常由“HTML5 云网站+APP 应用客户端”两部分构成,APP 应用客户端只需安装应用的框架部份,而应用的数据则是每次打开 APP 的时候,去云端取数据呈现给手机用户。
    ✔     Web APP 更多是更多用于页面展示,侧重于简单的交互,只能使用有限的移动硬件设备功能。
    ✔     Web App 通过移动设备上的浏览器访问,软件更新只需要更新服务器就够了,用户层面不需要做任何操作。不需要安装客户端,可以节省手机终端的内存空间。
    ✔     Web App 的所有的用户都是用同样的版本,所有用户获得的功能都是相同的。版本更新比较方便,直接在服务器侧更新数据即可。一个功能做好了就能上线,一天更新几十次都毫无压力。如果客户端只是个浏览器,那一切都会变得很简单。

  • Hybrid App
    ✔     现在比较流行是将原生 App 和 Web App 进行融合。
           ★     应用大的框架是原生的,其他详细的内容就通过网页封装,这样做的好处就是在方便更新的同时,也能保证核心功能的交互体验。
    ✔     主要以 JS+Native 两者相互调用为主,从开发层面实现“一次开发,多处运行”的机制,成为真正适合跨平台的开发。
    ✔     目前已经有众多 Hybrid App 开发成功应用,比如百度、网易等知名移动应用,都是采用 Hybrid App 开发模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdtaogang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值