准备
1、被测试的app应用(apk包)
2、运行appium server 就是appiumdesktop
启动后,点击Adcanced
勾选Allow Session Override
然后点击start Server 启动appium server
3、启动被测app的运行环境
真实设备或者模拟器
4、把apk包安装到运行环境(3中)
虚拟器直接拖拽
真机可以使用命令安装或者直接放到手机中安装
下面写脚本例如开发者头条中的登录注册功能
脚本略过
查看包名称用aapt dump badging XXX.apk > d:a.txt && d:\a.txt
选择APP界面元素
查看工具
web自动化开发的时候,要找到元素,我们是根据浏览器开发者工具(F12)来查看元素的特性,根据这些特性,比如:id,classname,tagname,或者CSS和xpath选择到元素。
而安卓查看界面元素,最常用的是Android SDK中的uiautomator,它在.androidsdk oolsin下面
手机和电脑连接之后,打开uiautomator.bat就能查看手机页面中元素
跟web的不同点:
不能自动刷新
鼠标移动到某个元素上,某个元素就有虚线红框子,同时右边会高亮显示当前的元素,确定要查看元素,就单击一下,虚线变实线
还有一种查看元素的方法,用appiumserver中的inspect,这个工具可以查看元素是否能定位到,便于调试相当于web页面中的ctrl+F
元素属性
index:
text:
resource-id:
class:
package:
contet-desc:用来描述元素的用途和特性
bounds:界面中元素的位置,左上角和右下角的坐标
选择元素的代码
find_element_by_XXX:查找符合条件的第一个元素
find_elements_by_xxx:查找符合条件的所有元素
选择元素的方式
1、ID(就是resource-id)
2、classname
3、XPATH
web自动化的时候,最灵活的定位方式就是CSS和xpath了,经常用他们来定位一些比较难定位到的元素,例如没有ID,没有唯一name的属性,甚至几乎没有什么属性,因为css和xpath可以根据上层节点的相对位置来定位
在appium中,不支持使用css可以使用xpath来定位元素
写法如下:
driver.find_element_by_xpath('//eles//ele2[@attr="a1"]')
特别注意的是,以前做web自动化的时候xpath中每个节点名是html的tagname,在appium中,每个节点名对应的是class属性的内容
注意:
@1:appium不支持by_name,可以使用find_element_by_AndroidUiAutomator("text("我的")")
@2:不支持by_cssselector,可以使用by_Xpath
如何查看元素是否唯一:把xml导出到文件中,uiautomator左上角第四个图标
使用uiautomator定位元素
javacode = "new UiSelector().recourceId("android.com.XX")" #java代码
driver.find_element_byandroidUiautomator(javacode)
具体参考Android UI 自动化测试之UiSelector:https://blog.csdn.net/qq_33544833/article/details/77370329
操作元素
webelement常用的调用方法是send_keys和click方法
1、tap
tap和click类似,都是点击界面,最大的区别,tap是针对坐标而不是针对找到的元素。有时候,我们难易定位怨毒的时候可以使用这个tap方法
写法如下:
driver.tap([(650,1250)],300) 两个参数,第一个表示点击的坐标,第二个表示停留的时间毫秒
2、swipe
滑动
写法如下:
driver.swipe(50,500,50,1230,1000) 5个参数分别表示,起始位置的X坐标、起始位置的Y坐标、结束位置的X坐标、结束位置的Y坐标,滑动所消耗的时间,短表示滑动的快,时间长表示滑动的慢
3、通知查看
系统通知:比如短信通知、微信通知、自己应用对应的通知,安卓打开通知的方式,可以是从屏幕顶端下滑来查看通知。其实appium提供了可以直接打开通知栏的方法
写法如下:
driver.open_notifications()
4、按键操作
press_keycode(数字)
比如,返回键。keycode_back,对应数字4
driver.press_keycode(4)
home键盘,数字3
查看按键对应的数值,网址:https://developer.android.google.cn/reference/android/view/keyEvent.html
使用真实设备进行自动化
有时候要坐不同手机的兼容性测试,必须在真实的手机设备上进行测试
有的应用在模拟器上,种种原因,运行不了。比如微信。
1、USB线连接手机
2、打开开发者选项中的USB调试模式
3、电脑的命令窗口中输入adb devices -l