python怎么读封装函数封装其实分为两个层面,但无论哪种层面的封装,都要对外界提供好访问你内部隐藏内容的接口(接口可以理解为入口,有了这个入口,使用者无需且不能够直接访问到内部隐藏的细节,只能走接口,并且我们可以在接口的实现上附加更多的处理逻辑,从而严格控制使用者的访问)
第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装 。print(m1.brand) #实例化对象(m1.)
print(motor_vehicle.tag) #类名(motor_vehicle.)
-------------输出结果---------注意:对于这一层面的封装(隐藏),类名.和实例名.就是访问隐藏属性的接口
【python封装函数简单 python怎么封装函数】第二个层面的封装:类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问 。
Python中私有化的方法也比较简单 , 即在准备私有化的属性(包括方法、数据)名字前面加两个下划线即可 。
使用python简单封装selenium常用函数 年前走查脚本代码时,发现大家对selenium功能都在重复造轮子 , 而且容易出现一些常见低级bug 。于是在闲暇之余,封装一些常用的selenium功能 。
在某些网页中 , 存在多个frame嵌套 。而selenium提供的find_element函数只能在当前frame中查找,不能切换到其python封装函数简单他frame中,需要从最上级frame中逐步切换(当然也可以指定xpath的绝对路径 , 但是一般没人这么做) 。在python封装函数简单我们写代码过程中,需要明确知道当前frame位置和需要寻找元素的frame位置 。在frame切换过程中 , 容易因为疏忽导致frame切换错误导致元素无法找到的bug 。
页面中分布的frame,可以理解为树状结构 。因此我们可以采用递归的方式,沿着某条搜索路线frame节点 , 依次对树中每个节点均做一次访问 。
我们以163网址上的登录框为例:点击登录按钮,弹出登录iframe页面 。输入框位置在iframe中,因此我们不能使用xpath获取元素位置,需要进入iframe中,然后获取元素 。
手动切换ifame可能会产生bug,因此需要一套自动切换和检索frame的机制 。具体代码如下:
需要注意的是:如果页面中多个frame中,存在相同的xpath元素 。还是需要指定frame的路径,否则会返回搜索到的第一个元素 。
强制等待
直接调用系统time.sleep函数,不管页面加载情况一定会等待指定的时间,即使元素已被加载。
1.如果设置的时间较长 , 会浪费时间
2.如果设置的时间较短,元素可能没有加载 。
页面中某元素如果未能立即加载,隐式等待告诉WebDriver需等待一定的时间,然后去查找元素 。默认不等待,隐式等待作用于整个WebDriver周期,只需设置一次即可 。
1.在上文的find_element函数中,采用递归方式在所有frame寻找元素 。若采用隐式等待,则在每个frame中都需要等待设定的时间,耗时非常长 。
2.某些页面我们想要的元素已经加载完毕,但是部分其他资源未加载 。隐式等待必须等待所有元素加载完毕,增加额外等待时间 。
显示等待一般作用于某一个元素,在设定的时间范围内 , 默认每间隔0.5秒查找元素 。返回被加载的元素,若超过设定的时间范围未能查找则报错 。显示等待作为selenium常用的等待机制 , 我们来看下他的源码和机制 。
driver 注释中解释为WebDriver实例,但是代码中并未有相关检测 , 因此可以传入任何对象
推荐阅读
- css对字体的设置,css设置字体样式有哪些
- 死锁java示例代码,死锁的原因及解决方法java
- 双人解谜冒险小游戏,双人解谜的游戏
- mysql怎么插入汉字 mysql怎么输入中文数据
- 有赛车女郎的赛车游戏,赛车女叫什么
- 福昕pdf转word免费,福昕pdf如何转换成word
- 瓦片计算JAVA代码 瓦片算法
- 关注公众号兑卡吧,关注公众号领取会员卡
- 如何一张纸打印4张ppt,怎么一页打印4张ppt