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. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  2. 201521123014 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 数据库是为了实现一定目的按某种规则组织起来的"数据"的"集合".常见的数 ...

  3. PHP fwrite 函数:将字符串写入文件(追加与换行)(转)

    PHP fwrite() fwrite() 函数用于向文件写入字符串,成功返回写入的字符数,否则返回 FALSE . 语法: int fwrite( resource handle, string s ...

  4. Python的自学之路:Python基础(一)

    声明:我写博客不是为了什么,只是为了记录自己的学习状态,学过的知识点!方便以后进行好的复习!python小白,勿喷 python环境的搭建,在这里就不细说了,这里有我的链接,可以参考一下:https: ...

  5. IDEA运行编译后配置文件无法找到,或配置文件修改后无效的问题

    1.触发事件 今天正好在学习log4j,为了测试其配置文件log4j.properties中的各种配置,进行了频繁修改和程序启动以确认效果,因为是使用的IDEA建立的Web项目,接着问题就来了,配置文 ...

  6. 常用Java API(转)

    一. java.io.BufferedReader类(用于从文件中读入一段字符:所属套件:java.io) 1. 构造函数BufferedReader(java.io.FileReader FileR ...

  7. 在Myeclipse中用Java语言操作mysql数据库

    package OperateMysql; import java.sql.*; public class MysqlTest { public static void main(String[] a ...

  8. MyBatis学习(一)简介及入门案例

    1.什么是MyBatis? MyBatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架.MyBatis去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBati ...

  9. vim下处理文档中的\r\n\t字符

    问题复现 拿到的文档中包含了大量的\r.\n.\t等字符,形如: \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ ...

  10. 【DDD】领域驱动设计实践 —— UI层实现

    前面几篇blog主要介绍了DDD落地架构及业务建模战术,后续几篇blog会在此基础上,讲解具体的架构实现,通过完整代码demo的形式,更好地将DDD的落地方案呈现出来.本文是架构实现讲解的第一篇,主要 ...