Appium python自动化测试系列之滑动函数封装实战(八)
8.1 什么是函数的封装
教科书上函数的封装太官方,我们这里暂且将函数的封装就是为了偷懒把一些有共性的功能或者一些经常用的功能以及模块放在一起,方便我们以后再其他地方调用。这个只是个人的理解所以大家懂就行,不要出去就这么说。
8.2 如何封装函数
8.2.1 函数封装技巧
当我们面对一个功能或者一个模块时我们需要把一些有共性的东西找出来,然后封装成函数,只要记住只要我们用的东西可能用的次数超过一次时我们就给他封装起来,我们不管别人怎么看,我们只要自己干着顺手就行。
8.2.2 函数封装实战
我们通过下面的代码来讲解:
#coding=UTF-8
def getSize(self):
x = self.driver.get_window_size()['width']
y = self.driver.get_window_size()['height']
return (x,y) #向左滑动
def swipeLeft(self,t):
l=self.getSize()
x1=int(l[0]*0.9)
y1=int(l[1]*0.5)
x2=int(l[0]*0.1)
self.driver.swipe(x1,y1,x2,y1,t) #向右滑动
def swipeRight(self,t):
l=self.getSize()
x1=int(l[0]*0.25)
y1=int(l[1]*0.5)
x2=int(l[0]*0.75)
self.driver.swipe(x1,y1,x2,y1,t)
上面的代码是我们之前滑动查找的代码,我们通过代码能够看见我把获取屏幕大小、上、下、左、右滑动的操作都封装成了代码,为什么要这么做呢?一个简单的例子,如果我获取屏幕不进行封装,那么我在往上滑动的时候是不是也要进行去写一次,其他地方也要写一次,那么这样是不是很麻烦呢?而且最简单的就是那样我的代码的可读性也更差。现在知道我们为什么要封装了吗?
如果你还不是很能够理解,那么你回去把我们的滑动查找的代码多看几遍,如果你不对函数进行封装,那你怎么去实现这个功能?
看到这里的小伙吧给大家留一个思考以及线下的作业题目,如果将你的启动配置封装一下,让他的实用性更佳高。
8.3 构造函数的使用
8.3.1 编码中构造函数的样子
有的人在开始学习时不明白构造函数到底是什么,而且经常听说构造函数,构造函数,到底这个构造函数在哪里。学习过java的小伙伴都知道构造函数的函数名和类名时一模一样的,那么在python里呢?他们到底是怎么工作的呢?
首先下面会写一些伪代码,所以不要拿去运行。
第一在我们写类的时候是这样的:
#下面定义一个类
class person:
def get_age(self):
return age
def get_name(self):
return name
当然上面的类你会报错,但是我们只需要知道思想,首先我们定义了一个类,然后里面有方法,然后方法给我们返回了一些值,然后我们要使用这个类的方法时是不是需要先去实例化一个对象出来?现在我们只是有类,但是没对象,没有具体的张三还是李四。所以我们需要怎么做嗯?是不是就有了下面的代码:
zhangsan=person(),然后如果要用张三的年龄是不是就变成了zhangsan.get_age(),但是这里问题来了,我返回了age,但是我是不知道你zhangsan具体有多少岁的啊,你没有告诉我。对吧?那么我是不是需要先告诉这个person?在创造他的时候就说,zhangsan你有3岁,名字叫做张三,对吧。那是不是也就是说我在zhangsan=person() 这个实例化时就需要传入名字和年龄?是不是就变成了zhangsan=person(‘张三’,‘3’),既然我们实例化时传入了两个参数,但是在我们的person类里面有这两个参数的地方吗?或者说有获取他的地方吗?没有!在我们python里面实例化时默认调用的是无参的构造函数,那么这里我们需要把他变成有参数的构造函数,那么就变成了下面这个样子:
#类
class person:
def __init__(self,age,name):
self.age = age
self.name = name
def get_age(self):
return self.age
def get_name(self):
return self.name
看出区别了吗?在我们类下面多了一个函数__init__,这就是我们python的构造函数,在你实例化这个类时会自动调用这个方法,所以我们实例化类时传入了两个参数也就在这里传入了两个参数,同样的我们这里也就获取了两个值,因为我们调用get_age的时候这个全局的age已经在我们实例化时获取到了,所以这里直接调用就获取到了。现在知道构造函数的作用了么?实战吧!
Appium python自动化测试系列之滑动函数封装实战(八)的更多相关文章
- Appium python自动化测试系列之等待函数如何进行实战(九)
9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...
- Appium python自动化测试系列之页面滑动原理讲解(十)
10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一 ...
- Appium python自动化测试系列之自动化截图(十一)
11.1 截图函数的正常使用 11.1.1 截图方法 无论是在手动测试还是自动化测试中场景复现永远是一个很重要的事情,有时候一些问题可能很难复现,这个都需要测试人员对bug有很高的敏感度,在一般的情况 ...
- Appium python自动化测试系列之混合app实战(十一)
12.1 什么是混合App 12.1.1 混合app定义 什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native ...
- Appium python自动化测试系列之元素的定位(六)
6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...
- Appium python自动化测试系列之移动自动化测试前提(一)
1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...
- Appium python自动化测试系列之appium环境搭建(二)
2.1 基础环境搭建 当我们学习新的一项技术开始基本都是从环境搭建开始,本书除了第一章节也是的,如果你连最基础的环境都没有那么我们也没必要去说太多,大概介绍一下: 1.因为appium是支持andr ...
- Appium python自动化测试系列之Capability介绍(五)
5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...
- Appium python自动化测试系列之认识Appium(四)
4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...
随机推荐
- 三分钟深入TT猫之故障转移
结束了一周繁忙的工作,趁着周末,小编手中的键盘早已饥渴难耐了,想知道上期省略号中发生了什么有趣的故事么?且听小编娓娓道来,结尾有彩蛋. 目录 风月前场 梦回现实 模拟老鸨 会话机制 故障转移 总结 风 ...
- Python学习笔记004_字典_集合
>>> # 字典 用大括号表示, 它是影射类型,相当于java中的Map >>> >>> dict1 = {'李宁': '一切皆有可能', '耐克 ...
- mysql数据库-注释相关介绍
mysql执行的sql脚本中注释怎么写? mysql 服务器支持 # 到该行结束.-- 到该行结束 以及 /* 行中间或多个行 */ 的注释方格: mysql; # 这个注释直到该行结束 mysql; ...
- Git的使用详解
起步 关于版本控制 Git 简史 Git 基础 安装 Git 初次运行 Git 前的配置 获取帮助 小结 Git 基础 取得项目的 Git 仓库 记录每次更新到仓库 查看提交历史 撤消操作 远程仓库的 ...
- PuTsangTo
一. 跳跃与移动的优化与完善 先给上一次的内容做一次补救,也就是上一次中还留存的,由于键盘按键事件的第一次回调与后续回调之间会间隔个小半秒带来的跳跃落地后动作延迟的情况. 最终的键盘按下回调的处理代码 ...
- Highway Networks
一 .Highway Networks 与 Deep Networks 的关系 深层神经网络相比于浅层神经网络具有更好的效果,在很多方面都已经取得了很好的效果,特别是在图像处理方面已经取得了很大的突破 ...
- 分享ES6中比较常用又强大的新特性
前言 es6有很多新东西,但是感觉常用的并不是很多,这里学习记录了一些我自己认为非常常用又强大的新特性. scoping 实用的块级作用域,let x = xxx 可以声明一个块级作用域的局部变量,简 ...
- 基于maven创建和部署Webx项目
1.准备工作 下载 Webx Maven 项目的目录结构Artifact插件. archetype-webx-quickstart-1.0.tar.gz插件:http://central.maven. ...
- JavaScript 实现发布消息后,距离当前时间的实现
某条消息发布后,距离当前时间多久的时间显示 //显示发布时间的函数 function pastTime(_createTime) { //var createTime = _createTime.su ...
- struts整合easyUI以及引入外部jsp文件url链接问题
找了很久没有解决,在这篇博客中找到了思路,在此引用: 使用EasyUI搭建后台页面框架 EasyUI菜单的实现 ssh项目可参考: ssh框架项目实战