先给大家介绍一下App自动化的基本流程。
1.选中界面元素
2.界面元素操作
点击、输入、拖拽、滑动获取界面元素属性,以上这些是Appium提供的能力
3.逻辑处理这部分考验代码功底,与具体自动化框架无关
元素定位
元素定位语法:find_element(By.方法,'value’)
常用定位方式:1.通过ID定位2.通过NAME定位3.通过class_name定位4.通过xpath定位5.通过link_text定位6.通过css_selector定位
这里要说明的是,Appium提供了CSS定位,但是没法使用CSS。为什么没有办法用?因为我们现在大部分app都是原生+混合的,而CSS是web专用的,所以是没有办法在原生和混合的app中去做定位的。我们在原生或者混合的app里面用的最多的定位方式是id、xpath和link_text。
ID定位
语法:driver.find_element(By.ID,‘resource-id’)
BY.ID中的ID一定是大写的,逗号后面跟的字符串是我们在元素定位的过程中发现的resource-id。在定位的过程中,resource-id可能会出现多个,代码写到这,系统会默认识别第一个。
还有一个是accessibility id,这个在前面元素定位的界面中,我们也可以看到。
语法:driver.find_element(By.ACCESSIBILITY_ID,'accessibility id')
Xpath在appium中的应用
在实践的过程中,用得最多的是Xpath,这里给大家列出了几个Xpath表达式:
1.通过ID选择//*[@resource-id=“”]
2.通过class选择//android.view.ViewGroup
3.通过其他属性选择//*[@属性=“属性值”]
4.选择子元素//*[@属性=“属性值”]/*
5.选择父元素//*[@属性=“属性值”]/..
Appirum坐标操作
语法:driver.tap(x,y)
这个方法用得并不多,大家都知道,手机市场上,屏幕种类非常繁多,尺寸也都不一样,这就导致坐标受屏幕的像素所影响。如果你写的一个脚本用的是坐标的定位,给别的同事用,换了一个手机,可能就定位不到了。只有在当某个元素定位不到时,暂时解决定位问题,不建议经常使用。
bounds值
例如bounds值为 [60,231][420,710],表示该元素左上角坐标是[60,231],右下角坐标为[420,710]
在脚本中上传时,传一个即可,左上角坐标、左上角坐标都可以,通常传左上角坐标。
tap操作 语法:driver.tap(列表中传元组,持续时间)
运行就直接点击,持续时间是毫秒级,比如我们要按2秒,直接输入2000即可。
滑动(swipe)操作
语法:driver.swipe(x1,y1,x2,y2)
滑动操作在平时用到的比较多,比如测试微信小程序端、新闻客户端刷新。
滑动需要明确起点和终点,这个语法括号中传的是类似于坐标点,从x1,y1传到x2,y2,这个操作只适用于部分手机,如果手机换了一个大一些的屏幕,就需要变了。
元素操作
元素操作就是在元素定位的语句后面加一个 .click或者.send_keys()。
1.点击driver.find_element(By.元素类型,‘定位值').click()
2.输入driver.find_element(By.元素类型,‘定位值’). send_keys()send_keys()传的参数格式是字符串
首次运行
首次运行脚本手机自动新增两个APP,Appium-settings和UiAutomator2,确保可以自动安装,并开启全部权限。后面要跑自动化脚本,这两个APP是不可缺少的。
1.Appium-settings应用会自动安装并启用无界面,打开后闪退,以服务形式存在2.UiAutomator2Appium优化后的安卓底层自动化驱动桌面可能看不到图标,也打不开
Appirum配置
下面是Appirum代码中的详细配置,针对每一个字段的解说可查看【视频回放】部分。
desired_caps={#移动设备平台'platformName':'Android',#平台OS版本号,写整数位即可'plathformVersion':'10', #设备的名称--值可以随便写 'deviceName':'P30', #提供被测app的信息-包名,入口信息: #1.打开被测app,2.命令行输入以下信息 #adb shell dumpsys activity recents | findstr intent={ #查看当前活动app包名 'appPackage':'com.tencent.wemeet.app', 'appActivity':'.StartupActivity', #确保自动化之后不重置app 'noReset':True, #设置session的超时时间,单位秒,默认60s 'newCommandTimeout':6000, #设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator2 'automationName':'UiAutomator2',#或者UiAutomator1 'skipServerInstallation':True#跳过UI2的安装,如果第一次运行程序,不要添加该配置}
自动化测试框架Pytest
Pytest是Python的一款自动化测试框架,在学习自动化测试过程中,我们最开始学习的都是线性脚本,但是当学到一定阶段以及业务复杂度和数据量上来后,我们必须需求一种全新的框架思维来管理和规范我们的测试脚本,从而实现高类聚低耦合的理念。 安装:pip install pytest
运行:命令行输入pytest 文件名 -s
这里还给大家推荐一个报告生成工具Allure,它是开源测试报告框架,支持pytest单元测试框架,可以使用jenkins持续集成工具。
安装步骤:1. Allure数据包2. pip install allure-pytest3.将bin目录加入Path环境变量中
(后面的内容是实操演示部分,大家可以私信我获取演示视频)