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自动化测试系列之滑动函数封装实战(八)的更多相关文章

  1. Appium python自动化测试系列之等待函数如何进行实战(九)

    ​9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...

  2. Appium python自动化测试系列之页面滑动原理讲解(十)

    10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一 ...

  3. Appium python自动化测试系列之自动化截图(十一)

    11.1 截图函数的正常使用 11.1.1 截图方法 无论是在手动测试还是自动化测试中场景复现永远是一个很重要的事情,有时候一些问题可能很难复现,这个都需要测试人员对bug有很高的敏感度,在一般的情况 ...

  4. Appium python自动化测试系列之混合app实战(十一)

    12.1 什么是混合App 12.1.1 混合app定义 什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native ...

  5. Appium python自动化测试系列之元素的定位(六)

    ​6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...

  6. Appium python自动化测试系列之移动自动化测试前提(一)

    1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...

  7. Appium python自动化测试系列之appium环境搭建(二)

    ​2.1 基础环境搭建 当我们学习新的一项技术开始基本都是从环境搭建开始,本书除了第一章节也是的,如果你连最基础的环境都没有那么我们也没必要去说太多,大概介绍一下: 1.因为appium是支持andr ...

  8. Appium python自动化测试系列之Capability介绍(五)

    ​5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...

  9. Appium python自动化测试系列之认识Appium(四)

    ​4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...

随机推荐

  1. bzoj 3212 Pku3468 A Simple Problem with Integers

    3212: Pku3468 A Simple Problem with Integers Time Limit: 1 Sec  Memory Limit: 128 MB Description You ...

  2. 用vue开发一个app(2,main.js)

    昨天跟着vue的官网搭建了vue的一个脚手架,我也是第一次用VUE一切都在摸索阶段. 今天试着看下里面脚手架里面有点什么东西 先看看main.js 导入了3个模块 一个vue,一个app,还有rout ...

  3. 静态页面如何实现 include 引入公用代码

    一直以来,我司的前端都是用 php 的 include 函数来实现引入 header .footer 这些公用代码的,就像下面这样: <!-- index.php --> <!DOC ...

  4. Linux安装pytorch的具体过程以及其中出现问题的解决办法

    1.安装Anaconda 安装步骤参考了官网的说明:https://docs.anaconda.com/anaconda/install/linux.html 具体步骤如下: 首先,在官网下载地址 h ...

  5. java注解生成xml和包含CDATA问题

    百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类! 下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和x ...

  6. BGP协议

    BGP属于自治系统间路由协议.BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障.BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议.这是因为BG ...

  7. bzoj1968 COMMON 约数研究

    Input只有一行一个整数 N(0 < N < 1000000).Output只有一行输出,为整数M,即f(1)到f(N)的累加和.Sample Input 3 Sample Output ...

  8. VBA.NET 系统可行性分析模板

    系统可行性分析 1.  技术可行性分析 前提: 系统不知在Window系统中,开发环境不受限制:系统以C/S结构为主,提供大量的数据操作:主要用VB.NET开发,提高安全性和访问效率. 基本要求 客户 ...

  9. Revit二次开发初体验

    最近换了下工作,由之前的互联网企业转入了BIM软件开发行列.具体原因不多说,作为一个程序员来说学习永无止境.下面来一个Hello World体验下Revit的二次开发 事前准备 VS Revit 20 ...

  10. Java高新技术 注解

      Java高新技术 注解 知识概要:                  (1)了解注解 (2)注解的应用结构图 (3)@Retention(RetentionPolicy.RUNTIME)    ...