appium 自动化测试框架详读(一)
appium框架使用的过程记录,开始使用markdown来语法来编写,不知道博客园是否会支持markdown语法
***
1. appium原理
* appium启动时,创建一个http://127.0.0.1:4723/wd/hub服务端服务端和设备默认使用4724端口进行通信
* 底层调用UIautoamator工具
* 服务端给设备一个bootstrap.jar
* 启动包后会在手机上创建socket服务,暴露4723端口
* 服务端收到也就是appium收到脚本传递命令,通过电脑4724端口想设备4724端口发送指令
* bootstrap,jar收到指令后再去点击/滑动操作,完成后再给服务端一个响应,服务端收到响应后再去运行脚本
***
2. 运行appiumdesktop的时候,手机上安装的文件apk是什么
* unlock,setting,inputmanager三个apk
* Settings是用来指定appium server的工作方式。
* Settings只用来控制appium server,不能用于控制被测应用或设备
*unlock 是用来解锁设备的
*inputmanager 应该是一个输入管理
****
3. appium api有那些?
* 定位控件
* 手势操作
* 获取相关元素及设备
* 其他操作,网络/截图
***
4. 课外疑问,安卓的activity究竟是什么
* 在一个android应用中,一个Activity通常就是一个单独的屏幕
* 它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
* Activity之间通过Intent进行通信。
* Android 是通过一种 Activity 栈的方式来管理 Activity 的,一个 Activity 的实例的状态决定它在栈中的位置。处于前台的 Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的 Activity 将被激活,上浮到栈顶。当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换。
****
5. ui自动化框架目录
* appium框架目录:
* appPerf app运行时的性能监控,包括内存和电量cpu
* common 公共文件,获取yaml内容/报告/截图
* config 配置文件
* initdata 数据初始话
* testModule 测试用例,每一个yaml文件对应一个用例
* testResult 存放项目运行时需要的文件
* testRuner 存放项目运行时需要的文件
* utils 存放一些工具
***
6. 开始使用框架:
* 在 testModule 目录的 yaml 文件下编写脚本了
* 选择一部合适的手机,连接电脑,打开开发者选项 USB 调试模式。然后 dos 命令下输入 adb devices 验证是否连接成功,出现设备信息表示成功
* 打开 appium desktop,然后配置 host 为本地 ip 127.0.0.1 点击 start server
* 一切准备就绪后,最后我们在 testRunner 目录下运行 run_mttest_ui.py 文件,开始自动 化执行用例
# 疑问:
1. @classmethod,
* 类属性属于类,数据属性属于类的实例
* 大家看,数据属性name和类属性mode均没有在类中被定义,你要做的,只是在需要的时候使用他们即可.如何预先给属性赋值
数据属性:
```
class Test:
pass
t=Test()
t.name='notus' 数据属性:
print t.name
Test.mode='auto' 类属性
print Test.mode
@classmethod #在cal_info函数前加上@classmethon,则该函数变为类方法,该函数只能访问到类的数
据属性,不能获取实例的数据属性
def cal_info(cls): #python自动传入位置参数cls就是类本身
print('这是一个%s'%cls.cal_name) #cls.cal_name调用类自己的数据属性
```
* @staticmethod 静态方法只是名义上归属类管理,但是不能使用类变量和实例变量,是类的工具包放在函数前(该函数不传入self或者cls),所以不能访问类属性和实例属性
* @property #在cal_add函数前加上@property,使得该函数可直接调用,封装起来
2. super方法
*super() 函数是用于调用父类(超类)的一个方法。
* super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
* MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
3. unittest.TestLoader是什么
* unittest 的 TestLoader 成员下面提供了discover()方法可以通过文件的名称来判断是否为测试用例文件,
* 如何为用例文件则自动添加到测试套件中
* 多个独立的测试用例(test case)或者多个独立的测试套件(test suite,可以理解为子套件)可以构成一个
* 测试套件,那么我们写好了一个用例之后,如果去构建一个测试套件呢。下面介绍几种构建测试套件的方法:
* 通过unittest.TestSuite()类直接构建,或者通过TestSuite实例的addTests、addTest方法构建
* 通过unittest.TestLoader类的discover、loadTestsFromTestCase、loadTestsFromModule、loadTestsFromName、loadTestsFromNames这五个方法去构建
* 通过unittest.makeSuite()、unittest.findTestCases()这两个方法去构建
appium 自动化测试框架详读(一)的更多相关文章
- Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)
简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...
- Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
简介 经过一段时间的准备,完善的差不多了,继续分享有关Appium自动化测试框架综合实践.想必小伙伴们有点等不及了吧! driver配置封装 kyb_caps.yaml 配置表 参考代码 platfo ...
- Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)
1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现.由于时间的关系,宏哥这里用代码给小伙伴演示两个模块:注册和登录. 2.业务模块封装 因为现在各种APP的层出不群 ...
- Appium+python自动化(四十一)-Appium自动化测试框架综合实践 - 即将落下帷幕(超详解)
1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现.到今天为止,大功即将告成:框架所需要的代码实现都基本完成. 2.data数据封装 2.1使用背景 在实际项目过程 ...
- Appium+python自动化(四十二)-Appium自动化测试框架综合实践- 寿终正寝完结篇(超详解)
1.简介 按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台.今天这篇分享讲解完.Appium自动化测试框架就要告一段落了. 2.执行测试用例&报告生成 测试报告, ...
- 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍
目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...
- (原创)Python 自动化测试框架详解
自己折腾了一个python的自动化测试框架,梳理了一下流程,简单分享一下. 项目背景 B/S架构,进行用户界面的自动化测试 工具选择 python开发的自动化测试框架,足够灵活,可以随时根据需求进行变 ...
- Appium 自动化测试框架:关键字驱动+数据驱动
1. 关键字驱动框架简介 2. 框架结构说明 3. 框架代码实现 action 包 page_action.py business_process 包 case_process.py data_so ...
- 基于C#的Appium自动化测试框架(Ⅰ)
因为工作原因,使用的编程语言都是C#,但是国内相应的Appium资料少得可怜,Java版本的Appium也考虑过,但是奈何自己搞不定Eclipse这个编译环境[说白了就是因为懒-- 无意中看到了外面的 ...
随机推荐
- [git]查看一个git项目的仓库位置
项目文件夹的根目录下查找.git文件夹.打开config文件,里面的remote部分就是: [core] repositoryformatversion = 0 filemode = false ba ...
- notepad++ 插件说明(一)
notepad++插件说明(一) 1.xml插件安装 下载地址:https://sourceforge.net/projects/npp-plugins/files/XML%20Tools/Xml%2 ...
- jinja2渲染使用
说明:通过jinja2渲染后只能打印出来效果,目前无法保存 例1:渲染 .j2 文件 1.安装jinja2模块 pip3 install jinja2 2.定义模板 说明:变量必须是小写,大写有的情况 ...
- MYSQL中重命名procedure的一种方法
最近有用到对存储过程(procedure)重命名的功能,在网上找了一下资料都没有讲到在mysql中是如何实现的,当然可以删掉再重建,但是应该有别的方法,在"mysql"这个数据库( ...
- Python爬虫学习==>第六章:爬虫的基本原理
学习目的: 掌握爬虫相关的基本概念 正式步骤 Step1:什么是爬虫 请求网站并提取数据的自动化程序 Step2:爬虫的基本流程 Step3:Request和Response 1.request 2. ...
- R数据分析(一)
R语言特点: 主要用于统计分析.图表显示. 属于解释型语言.支持模块化编程. 应用:数据科学.统计计算.机器学习 学习方法: 做笔记,记重点或者心得 手动实践,加深理解 坚持练习,利用身边数据 ...
- classmethod自己定制
# # 利用描述符原理定义一个@classmethod # class ClassMethod: # def __init__(self,func): # self.func = func # def ...
- Asp.NetCore应用--部署到 ubuntu 进行托管
准备过程 netcore linux发布包(本人是通过vs2017发布) ubuntu 16.0.4虚机 进行托管 ubuntu netcore发布文件路径 服务器设置为将对 http://< ...
- webdriervAPI(键盘事件)
from selenium import webdriver from selenium.webdriver.common.keys import Keys #导入键盘操作事件 driver ...
- 【DSP开发】TMS320C66x DSP SPI Nor Flash的程序烧写
经过一段时间的研究终于把TMS320C6657单核和双核的SPI Nor Flash的程序烧写调通了.工具都是前辈的工作,有需要的可以留下邮箱,我有空可以发. 原理参考钱丰的<TI c66x 系 ...