续上个笔记
移动端测试知识概览
1.移动端测试是什么
移动端测试是指对移动应用进行的测试,即实体的特性满足需求的程度
2.移动端测试分类
1.app功能测试
兼容性测试、异常测试、升级安装卸载测试、健壮性测试
2.App自动化测试
优点
1.高效数据绝对正确
2.不需要人工干预
3.回归测试
3.主流的移动端自动化工具
1.Robotium:支持java,仅支持Android系统,不支持跨应用
2.Macaca:支持java,Python,Node,js,支持Android和ios系统,支持跨应用
3.Appium:支持java,c#,php,perl,rubyPython,Node,js,支持Android和ios系统,支持跨应用
4.UIAutomatorviewer手机控件查看工具
1.工具简介:用来扫描和分析Android应用程序的UI控件的工具
2.how使用
1.进入SDK目录下的tools目录,打开uiautomatorviewer
2.电脑连接真机或打开android模拟器
3.启动待测试app
4.点击uiautomatorviewer的左上角Device Screenshot,会生成app当前页面的UI控件截图
5.选择截图上需要查看的控件,即可浏览该控件的id,class,text,坐标等信息
APP移动端测试高级
1.Appium介绍
Appium是一个移动端的自动化框架,可用于测试原生应用、移动网页应用和混合型应用,且是跨平台的
2.环境搭建
需准备:jdk1.6.0、android-sdk_r24.3.4-windows、python2.7、appium1.4.13.1、Node.js、Appium-Python-Client
Appium库安装:
# 安装
pip install Appium-Python-Client
# 检验是否成功
pip list
3.Appium使用
1.打开模拟器或者真机的应用
①打开手机应用
②打开Appium
③创建一个python项目,并创建一个文件
④将下面代码复制到文件中
⑤获取当前应用包名和启动activity并修改文件
2.脚本内启动其他app:driver.start_activity(appPackage,appActivity)
3.关闭app:driver.close_app() # 关闭当前操作的app,不会关闭驱动对象
4.关闭驱动对象:driver.quit()
4.App基础操作API
1.前值代码
# server 启动参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
# 声明driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
2.安装APK到手机:driver.install_app(app_path)
3.手机中移除App:driver.remove_app(app_id)
4.判断APP是否已安装:driver.is_app_installed(bundle_id)
5.从手机中拉取文件:
import base64
data = driver.pull_file(path) # 返回数据为base64编码
print(str(base64.b64decode(data),'utf-8')) # base64解码
6.获取当前屏幕内元素结构:driver.page_source
5.手机空间查看工具uiautomatorviewer
1.工具简介:用来扫描和分析Android应用程序的UI控件的工具
2.how使用:1.进入SDK目录下的tools目录,打开uiautomatorviewer
2.电脑连接真机或打开android模拟器
3.启动待测试app
4.点击uiautomatorviewer的左上角Device Screenshot,会生成app当前页面的UI控件截图
5.选择截图上需要查看的控件,即可浏览该控件的id,class,text,坐标等信息
6.App元素定位操作
1.Appium常用元素定位方式
id→id属性值 :find_element/s_by_id(id_value) # id_value:为元素的id属性值
class→class属性值:find_element/s_by_class_name(class_value) # class_value:为元素的class属性值
xpath→xpath表达式:find_element/s_by_xpath(xpath_value) # xpath_value:为可以定位到元素的xpath语句