Part-Appium-3
1.谁可以不做ui自动化
>人工测试旧可以满足公司的需求
>初创团队,业务未定型,重构频繁,无回归测试压力
>业务无积累,大量小功能频繁上线
>测试体系完备:单元测试,集成测试非常完备
2.自动化测试的价值
>提高效率,融入企业迭代流水线,CICD,devops融合
>回归测试,功能测试加速
>提高质量,兼容性,专线/非功能测试,自动化探索测试
3.appium原理
appium底层用的就是uiautomator2
apppium在电脑上开启web服务,脚本语言会发送http请求给appium服务,收到后会调用webdriver驱动,push到手机,在手机上安装uiautomator2 server apk,进行自动化。
4.自动处理权限弹框
autoGrantPermissions:true
5.caps的设置
>app apk地址
>appPackage包名
>appActivity activity名字
>automationName,默认使用uiautomator
>noReset,fullReset是否在测试前重置相关环境
>unicodeKeyBoard,resetKeyBoard是否需要输入非英文之外的语言并在测试完成后重置输入法
>udid,如果有多台设备,用此参数
5.api
http://appium.io/docs/en/about-appium/intro/,commands
>find_element_by_:resourceId,classname,xpath,accessID,text,
>element.click() 点击
>driver.swipe(
>
>
>
6.查看包名和activity名称
adb shell dumpsys window | grep -i mCurrentFocus
7.
from appium import webdriver apk = 'cc.rideal.messageboard/com.peopletech.main.mvp.ui.activity.SplashActivity' caps = {} caps["platformName"] = "android" caps["deviceName"] = "android" caps["appPackage"] = "cc.rideal.messageboard" caps["appActivity"] = "com.peopletech.main.mvp.ui.activity.SplashActivity" caps["autoGrantPermission"] = "true"
7.运行脚本时,如果出现urllib3相关的问题,可以尝试升级: pip3 install --upgrade --ignore-installed urllib3 --user
8.Hybrid APP,Native App,Web APP
native直接用find_element_by_id这种就可以
>web view:内嵌的浏览器
i.在模拟器上,webview的所有的代码都打开。但真机,是不允许获取内部控件的。这是要找研发,开启webview的调试属性
>
>
>
>
9.PO模式:case面向业务,一个页面就是一个服务。
> 用公共方法代替UI所提供的功能
> 方法应该返回其他的PageObject或者返回用于断言的数据
> 同样的行为不同的结果可以建模为不同的方法
> 不要在方法内加断言
> 不要暴露页面内部的元素给外部
> 不需要建模UI内的所有元素
10.PO主要组成元素
>Page对象,完成对页面的封装
>Driver对象,完成对web,android,ios,接口的驱动
>测试用例:调用page对象,实现业务并断言
>数据封装:配置文件和数据驱动
>其他功能的封装,改进原生框架的不足