APP自动化测试之(一) --------Appium自动化测试


跟着逻辑走。


第一章    App自动化框架选择 

目前较火的自动化工具特点对比:

  • Appium(适用于Android&iOS;支持多语言;不需要应用源码)
  • Uiautomator(适用于Android;仅Java语言;不需要应用源码)
  • Robotium(适用于Android;仅Java语言;不需要应用源码)
  • Calabash(适用于Android&iOS;Ruby语言(其他语言不友好);iOS上需要应用源码)

第二章     Appium简介

Appium是一个自动化测试开源工具,支持IOS和Android平台上的移动原生应用、移动Web应用和混合应用。所谓的“移动原生应用”是指那些用IOS或者Android SDK写的应用;所谓的“移动Web应用”是指使用移动浏览器方位的应用(Appium支持IOS上的Safari和Android上的Chrome);所谓的“混合应用”是指原生代码封装网页视图(原生代码和Web内容交互)。更重要的是,Appium是一个跨平台的工具,它允许测试人员使用同样的接口、基于不同的平台(IOS、Android)编写自动化测试脚本,这样大大增加了IOS和Android测试间代码的复用性。

Appium的优点:

  • 支持众多的多语言,任性选择开发语言是一件幸福的事情
  • 不需要应用源码,给予测试开发工作一定的自由度
  • 能跨应用进行测试,很好很强大
  • 支持iOS及Android平台,面对双平台APP时,妈妈再也不用担心我用两套测试框架了,减少认知成本
  • 支持Android原生及混合应用,任凭开发人员怎么折腾我都能招架的住

第三章   Appium测试环境搭建

该章参见测试环境搭建,非常的详细,在此不做赘述。

 

第四章   Appium实战(一) ---连接真机模拟登录

1、手机型号:Honor V8,连上数据线,打开开发者模式(每个手机不一样,有的手机需要连续点击安卓版本处才会显示出开发者模式),打开USB调试。

注:此处有坑,当打开cmd调用adb devices命令时,可能会出现列表为空的情况。网上有很多解决办法,我尝试过后都无效,但是每个手机不一样,所以请依据自身问题对应解决。

我的解决方法是:在PC端下载一个豌豆荚,如果豌豆荚可以识别手机,那么就可以操作了(我也是第一次知道豌豆荚还有这种作用,其实别的类似的软件也可以的)。当豌豆荚识别手机后,就可以卸载豌豆荚了(PC端和手机端,因为这个LM软件,在连着数据线的时候会自动在你的手机上也安装。)卸载之后,确保进程中没有豌豆荚的进程,不然会占用adb服务。然后打开cmd,输入命令adb start-server,成功启动服务后,输入命令adb devices就可以看到设备了。如下:

2、 打开appium,点击左上角的安卓图标,根据自己的实际情况配置好参数,此处我只选择了真机,如下:

3、 现在需要知道怎么定位元素,也就是知道app的每个按键的元素定位。

  • 打开你安装sdk的目录,sdk/tools/uiautomatorviewer.bat,双击打开
  • 点击左上角的第2个图标Device Screenshoot,会显示当前屏幕信息,切换界面后再次点击即可。如下图:

4、编写测试脚本。刚刚得到的resource_id就是需要在脚本中写入的内容,大致如下:

 

第五章   Appium实战 ---启动一个计算器的应用并实现加法的运算

1、进到Android SDK的目录,双击运行AVD Manager.exe

2、点击Create创建一个Android模拟器。输入一个模拟器名称,选择设备类型和API版本,点击进行创建。创建完成后会显示当前所有的设备,选择设备,点击Start启动,我创建的是android 7.0的,如下:

 

3、获取应用的packageName和activityName,此处可参见获取被测试apk的packageName和要启动的activityName有一点要注意,有些模拟器的内置计算器的apk名称是ExactCalculator.apk,而不是Calculator.apk,然后就是这里的操作需要以管理员的身份运行cmd。

正确操作后得到如下的packageName和activityName。

4、Capability配置

Capability是一个字典,配置的是自动化测试的一些必要信息,包含了本次测试的平台名称及版本号、启动的是浏览器还是app等,客户端将这些告诉服务器,服务器根据这些信息创建自动化会话。 

Android平台相关并且常用的几个:

  • automationName:定义测试引擎,使用的android-sdk版本小于17时,使用Selendroid,大于等于17时使用Appium,默认是Appium
  • platformName:测试平台,通常用于移动设备,值有:Android、IOS、FirefoxOS
  • platformVersion:测试平台版本,根据设备的固件版本指定,例如Android的4.2、IOS的7.1
  • deviceName:设备名称
  • app:要安装的app的文件路径,可以是本地的绝对路径,也可以是远程网络路径
  • browserName:启动的浏览器名称,测试的是web应用时指定,Android平台设置为Chrome
  • newCommandTimeout:为了结束Appium会话,会设置一个等待从客户端发送命令的超时时间,默认为60秒,一般不需要设置
  • autoLaunch:测试时是否需要自动运行app
  • appPackage:设置app的包名,告诉Appium需要启动的app
  • appActivity:设置启动的Activity
  • appWaitActivity:要等待的Activity
  • appWaitPackage:要等待的appPackage
  • unicodeKeyboard:是否使用unicode键盘输入,在输入中文字符和unicode字符时设置为true
  • resetKeyboard:是否将键盘重置为初始状态,设置了unicodeKeyboard时,在测试完成后,设置为true,将键盘重置 

然后打开Appium,点击右上角的运行按钮,出现如下内容则说明启动成功:

 

 


解决BUG区域



 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值