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这个编译环境[说白了就是因为懒-- 无意中看到了外面的 ...
随机推荐
- Docker安装ElasticSearch 版本7.1.1
一.Docker 部署 ElasticSearch 1.从仓库中查找所有ElasticSearch的镜像 [root@iZwz99dhxbd6xwly17tb3bZ app]# docker sear ...
- ValueStack对象
ValueStack, 即值栈对象. 值栈对象: 是整个struts数据存储的核心,或者叫中转站. 用户每次访问struts的action,都会创建一个Action对象.值栈对象.ActionCont ...
- 提升键盘可访问性和AT可访问性
概述 很多地方比如官网中需要提升 html 的可访问性,我参考 element-ui,总结了一套提升可访问性的方案,记录下来,供以后开发时参考,相信对其他人也有用. 可访问性 可访问性基本上分为 2 ...
- 我非要捅穿这 Neutron(四)Open vSwitch in Neutron
目录 文章目录 目录 前文列表 OvS In Neutron 网络拓扑 OvS In Neutron 网络实现模型 双节点混合平面网络 双节点网络拓扑 OvS Bridges 与初始流表项 OvS b ...
- Ubuntu16.04中安装VirtualBox及简单配置
sudo apt-get -y install virtualbox 注:将该图表拖到桌面上即可 往下的过程都不变..... 将左边的菜单栏移动到下面 打开一个终端输入:gsettings set c ...
- c# 匿名类型获取值
代码片段: 读取 new{ ....} 方法1:转换为json对象 dynamic model = SaleOrderServices.GetGiftOrderById(WebHelper.GetQu ...
- 性能测试的 Check List (不断更新中)
1. 开发人员是否提交了测试申请?2. 测试对象是否已经明确?3. 测试范围是否已经明确?4. 本次不被测试的范围是否已经明确?5. 测试目标是否已经明确?6. 何时开始性能测试?7. 何时终止一轮性 ...
- docker commit命令
docker commit命令用于基于一个容器来创建一个新的docker镜像. docker commit制作的镜像,除了制定镜像的人知道执行过什么命令,怎么生成的镜像,别人根本无从得知.建议使用的是 ...
- java.lang.Double[] 转 double[]
Double[] v = list.stream().map(item -> item.getRespTime()).toArray(Double[]::new); Mean mean = ne ...
- (“(null)” is of a model that is not supported by this version of Xcode. Please...)
真机测试遇到以下问题: (还以为手机不支持Xcode的版本呢) 解决方法: 发现只要将XCode重启后就可以真机运行了,碰见这个问题的朋友可以试下,我反正是被坑了半小时...