Appium python自动化测试系列之滑动函数封装实战(八)

 文章为转载,感谢各位前辈的整理和努力

8.1 什么是函数的封装

教科书上函数的封装太官方,我们这里暂且将函数的封装就是为了偷懒把一些有共性的功能或者一些经常用的功能以及模块放在一起,方便我们以后再其他地方调用。这个只是个人的理解所以大家懂就行,不要出去就这么说。

8.2 如何封装函数

8.2.1 函数封装技巧

当我们面对一个功能或者一个模块时我们需要把一些有共性的东西找出来,然后封装成函数,只要记住只要我们用的东西可能用的次数超过一次时我们就给他封装起来,我们不管别人怎么看,我们只要自己干着顺手就行。

8.2.2 函数封装实战

我们通过下面的代码来讲解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#coding=UTF-8
    def getSize(self):
    = self.driver.get_window_size()['width']
    = 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里呢?他们到底是怎么工作的呢?

首先下面会写一些伪代码,所以不要拿去运行。

第一在我们写类的时候是这样的:

1
2
3
4
5
6
#下面定义一个类
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里面实例化时默认调用的是无参的构造函数,那么这里我们需要把他变成有参数的构造函数,那么就变成了下面这个样子:

1
2
3
4
5
6
7
8
9
#类
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已经在我们实例化时获取到了,所以这里直接调用就获取到了。现在知道构造函数的作用了么?实战吧!


猜你喜欢

转载自blog.csdn.net/longfei_2010/article/details/79984573