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 自动化测试框架详读(一)的更多相关文章

  1. Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)

    简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...

  2. Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)

    简介 经过一段时间的准备,完善的差不多了,继续分享有关Appium自动化测试框架综合实践.想必小伙伴们有点等不及了吧! driver配置封装 kyb_caps.yaml 配置表 参考代码 platfo ...

  3. Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)

    1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现.由于时间的关系,宏哥这里用代码给小伙伴演示两个模块:注册和登录. 2.业务模块封装 因为现在各种APP的层出不群 ...

  4. Appium+python自动化(四十一)-Appium自动化测试框架综合实践 - 即将落下帷幕(超详解)

    1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现.到今天为止,大功即将告成:框架所需要的代码实现都基本完成. 2.data数据封装 2.1使用背景 在实际项目过程 ...

  5. Appium+python自动化(四十二)-Appium自动化测试框架综合实践- 寿终正寝完结篇(超详解)

    1.简介 按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台.今天这篇分享讲解完.Appium自动化测试框架就要告一段落了. 2.执行测试用例&报告生成 测试报告, ...

  6. 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍

    目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...

  7. (原创)Python 自动化测试框架详解

    自己折腾了一个python的自动化测试框架,梳理了一下流程,简单分享一下. 项目背景 B/S架构,进行用户界面的自动化测试 工具选择 python开发的自动化测试框架,足够灵活,可以随时根据需求进行变 ...

  8. Appium 自动化测试框架:关键字驱动+数据驱动

    1. 关键字驱动框架简介 2. 框架结构说明 3. 框架代码实现 action 包  page_action.py business_process 包 case_process.py data_so ...

  9. 基于C#的Appium自动化测试框架(Ⅰ)

    因为工作原因,使用的编程语言都是C#,但是国内相应的Appium资料少得可怜,Java版本的Appium也考虑过,但是奈何自己搞不定Eclipse这个编译环境[说白了就是因为懒-- 无意中看到了外面的 ...

随机推荐

  1. yum源问题

    配置本地yum源 1.使用工具将iso文件上传到操作系统,或者直接挂载iso文件 2.配置yum #cd /etc/yum.repos.d/ 删除多余的repo文件 # vi /etc/yum.rep ...

  2. 查询出与jack互为好友的人名字

    建表 /* Navicat MySQL Data Transfer Source Server : connect1 Source Server Version : 50611 Source Host ...

  3. 操作系统-Windows:UWP(Universal Windows Platform)

    ylbtech-操作系统-Windows:UWP(Universal Windows Platform) 1.返回顶部 1. UWP即Windows 10中的Universal Windows Pla ...

  4. flutter 切换tab后保留tab状态

    前言 最近在用flutter写一个小项目,在写主页面(底部导航栏+子页面)时遇到的一个问题:当点击底部item切换到另一页面, 再返回此页面时会重走它的initState方法(我们一般在initSta ...

  5. 读取 .properties文件到数据库

    最近有一个这样的需求,将原本配置文件 .properties文件改到数据库当中,这样不用每次修改都重启服务器 java自带有处理 .properties文件的专有类 Properties,处理也很不错 ...

  6. 2019.11.29 SAP SMTP郵件服務器配置 發送端 QQ郵箱

    今天群裏的小夥伴問了如何配置郵件的問題,隨自己在sap裏面配置了一個 1.    RZ10配置參數 a)       参数配置前,先导入激活版本 执行完毕后返回 b)      输入参数文件DEFAU ...

  7. spring boot configuration annotation processor not found in classpath

    <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spri ...

  8. Python - 数据结构与算法(Data Structure and Algorithms)

    入门 The Algorithms Python https://github.com/TheAlgorithms/Python 从基本原理到代码实现的Python算法入门,简洁地展示问题怎样解决,因 ...

  9. 使用robotframework做接口测试4——搞定接口签名及密码加密

    接口签名是我做接口测试撞到的第一块石头,刚到新公司,本来想默默憋出来一个大招,然后碰到了签名接口,直接给跪了.于是只好找开发哥哥帮忙,把签名算法的java文件拿到,一行行对着用python实现了一遍. ...

  10. 惊讶!我定的日志规范被CTO在全公司推广了

    打印日志是一门艺术,但长期被开发同学所忽视.日志就像车辆保险,没人愿意为保险付钱,但是一旦出了问题都又想有保险可用.我们打印日志的时候都很随意,可是用的时候会吐槽各种 SB 包括自己!写好每一条日志吧 ...