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. Java程序设计——学生基本信息管理系统

    1.团队课程设计博客链接 http://www.cnblogs.com/handsome321/p/7067121.html 2.个人负责模块说明 本组课题:学生信息管理系统 本人任务:插入.删除学生 ...

  2. 201521123026《JAVA程序设计》第11周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 1.多线程同步:限制某个资源在同一时刻只能被一个线程访问.. 2.同步代码块:`synchronized(lock ...

  3. python之socket--粘包补充

    struct补充 import struct import json header_dic={'total_size':123123, 'filename':None, 'md5':None} hea ...

  4. 《Head First Java》读书笔记(2) - Java面向对象思想

    1.了解继承 对象继承实际上就是一种"is - a"的关系,如上图的"PantherMan is a SuperHero?",是,那么便属于继承的理解. 继承能 ...

  5. Python学习笔记012_网络_异常

    1,Python如何访问互联网? url + lib =  urllib >>> # 使用urllib包下的request模块 >>> >>> i ...

  6. Spring01-IOC

    1,新建一个Java Project 导入如下jar包和apache-commons-logging包 2, 在src目录下创建一个beans.xml的配置文件,先加入schema spring-be ...

  7. Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role

    <Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic ...

  8. Bootstrap笔记合集

    一. 为了简化操作,方便使用,Bootstrap通过定义四个类名来控制文本的对齐风格: ☑   .text-left:左对齐 ☑   .text-center:居中对齐 ☑   .text-right ...

  9. 设计模式学习之“观察者模式” [C#]

    <深入浅出设计模式>学习笔记第二章 需求: 开发一套气象监测应用,如图: 气象站,目前有三种装置,温度.湿度和气压感应装置. WeatherData对象追踪气象站的数据,并更新到布告板,布 ...

  10. .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控

    一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...