Python之面向对象总括,操作下拉菜单

微型计算机类别分为:硬件,操作系统,应用程序

(一) Select类

生龙活虎、面向对象

硬件:意在运转软件产生的通令。硬件包含CPU,内部存款和储蓄器,硬盘

Select类是selenium的三个特定的类,用来与下拉菜单和列表交互。

   1、面向进程

绝大比比较多CPU都有二种形式,即内核态与顾客态。        

下拉菜单和列表是透过HTML的<select> 成分达成的。选拔项是由此<select>中的<option>成分达成的。使用前使用上边包车型大巴口舌导入模块。

       a、优点:相当的大的收缩了写程序的复杂度,只必要顺着推行的步子,堆集代码就能够

①当cpu处于根本状态时,运营的是操作系统,能说了算硬件(可以博得具备cpu的指令集)     

from selenium.webdriver.support.ui import Select

       b、劣点:意气风发套流水生产线也许流程便是来消除多个标题,代码正是牵一发而天津全身

②当cpu处于客户太状态时,运维的是顾客软件,无法垄断硬件(能够收获具备cpu的下令聚焦的叁个子集,该子集不包罗操作硬件的指令集)

(二) Select类的效率及措施

   2、面向对象

图片 1 

功能/属性

简单说明

all_selected_options
获取下拉菜单和列表中被选中的所有选项内容
first_selected_option
获取下拉菜单和列表的第一个选项
options
获取下拉菜单和列表的所有选项

       a、优点:消除程序的增加性,对某一个对象单独校订,会马上反应到全数体系中

至于文件:

 

       b、劣点:可控性差,无法向面向进度的前后相继设计流水生产线式的能够很精准的测度难题的管理流程与结果,面向对象的次序风姿洒脱旦开头就有目的之间的并行解决难题。

  • 文本能够积累不一样门类的新闻,二个文件能够分包文本,图片,录像,Computer程序等剧情。
  • 计算机上硬盘上富有的内容都是以文件的款型积累。程序正是由三个依然五个文本构成的。
  • 文件对象是python代码对Computer上外国国语高校部文件的机要接口。

方法

简单说明

deselect_all()
清除多选下拉菜单和列表的所有选择项
deselect_by_index(index)
根据索引清除下拉菜单和列表的选择项
Index:要清除目标的索引
deselect_by_value(value)
清除和给定参数匹配的下拉菜单和列表的选择项
value:要清除目标选择项的value属性
deselect_by_visible_text(text)
清除和给定参数匹配的下拉菜单和列表的选择项
text:要清除目标选择项的文本值
select_by_index(index)
根据索引选择下拉菜单和列表的选择项
select_by_value(value)
选择和给定参数匹配的下拉菜单和列表的选择项
select_by_visible_text(text)
选择和给定参数匹配的下拉菜单和列表的选择项

   3、 类:具备相像特征的后生可畏类东西(人、狗、苏门答腊虎)

文件属性:

 

   4、对象/实例:具体的某一个东西(隔壁阿花、楼下旺财)

  名字

(三)  示例(检查12306注册页面包车型客车评释类型是还是不是与预期豆蔻梢头致)

   5、实例化:类——>对象的经过

  类型(注解文件数据类型,是图表,音乐,依然文本)

from selenium import webdriver
import unittest
from selenium.webdriver.support.ui import Select
class Register(unittest.TestCase):
  ...省略setup(这段就不注释了)
    def test_register(self):
        card_type =['二代身份证','港澳通行证','台湾通行证','护照']
        card_type_options = []
        #定位证件类型字段,作为Select类的对象实例
        select_card_type = Select(self.driver.find_element_by_id('cardType'))
        #检查默认选项是否为'二代身份证'
        self.assertTrue(select_card_type.first_selected_option.text == '二代身份证')
        #页面提供的证件类型选项数量是否为4个
        self.assertEqual(4,len(select_card_type.options))
        #将页面上每个选项的文本值添加到 card_type_options[]
        for s in select_card_type.options:
            card_type_options.append(s.text)
        #检查页面上证件类型选项是否与预期一致
        self.assertListEqual(card_type,card_type_options)
        select_card_type.select_by_index(1) #选择索引为1的选项(港澳通行证)
        #检查选择港澳通行证时,是否显示出生日期字段
        self.assertTrue(self.driver.find_element_by_id('born_date').is_displayed())
        select_card_type.select_by_value('B') #选择value = 'B'的选项(护照)
        select_card_type.select_by_visible_text('二代身份证') #选择文本为 二代身份证的选项
   ...省略tearDown(这段就不注释了)

   6、 在python中,用变量表示特征,用函数表示技能,因此具备同样特征和手艺的意气风发类东西正是‘类’,

  地点(存储在何地)

 

   7、对象是则是那风流倜傥类东西中实际的三个

  大小(文件中有多少字节)

class Person:   #定义一个人类
    role = 'person'  #人的角色属性都是人
    def walk(self):  #人都可以走路,也就是有一个走路方法,也叫动态属性
        print("person is walking...")

class 类名:
    类属性 = None
    def __init__(self,对象属性):
        self.对象属性 = 对象属性

    def 方法名(self):
        pass

实例 = 类名(10)
实例.方法名()

文件名:

    8、类的二种效应:属性引用和实例化

  大许多操作系统中(包罗Windows),文件名中有生龙活虎对用来提示文件中包括如何品种的多少。文件名中何奇之有最稀少一个点(.),点后边的有个别提议了文本的门类。那生龙活虎有个小名作扩展名(extension)

    9、属性援引(类名.属性)

如:my_letter.txt中的扩张名是.txt,代表“文本”,

class Person:   #定义一个人类
    role = 'person'  #人的角色属性都是人
    def walk(self):  #人都可以走路,也就是有一个走路方法
        print("person is walking...")


print(Person.role)  #查看人的role属性
print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

  my_letter.exe中,扩充名.exe,代表“可试行文件”

    10、例化:类名加括号正是实例化,会活动触发__init__函数的运营,能够用它来为种种实例定制自身的特点

 文件基础用法提示:

class Person:   #定义一个人类
    role = 'person'  #人的角色属性都是人
    def __init__(self,name):
        self.name = name  # 每一个角色都有自己的昵称;

    def walk(self):  #人都可以走路,也就是有一个走路方法
        print("person is walking...")


print(Person.role)  #查看人的role属性
print(Person.walk)  #引用人的走路方法,注意,这里不是在调用
文件迭代器是最好的读取行工具
内容是字符串,不是对象  
close时通常选项,调用close会终止对外部文件的连接
文件是缓冲的并且是可查找的

    11、

有关文件路线难题:

  种种文件都要存款和储蓄在某些地方,所以除了文件名以外,每一种文件还大概有相应的职位,硬盘和别的存款和储蓄介质都集体为文件夹或目录。

  文件夹(folder)和目录(directorie)表示的是同同样东西,只是名字差别而已。文件夹或目录组织和涉及的主意叫做文件夹结构或目录结构。

  位于其余文件夹中的文件夹称为子文件夹(subfolder),要是用目录描述则变为子目录(subdirectory)

图片 2

 

该文件路线:‪C:python36Toolsscripts__pycache__

tips:斜线(和/)的科学利用,在门路名中这两个都承担,可是为了以免报错,最佳使用/,倘若使用一时会和后边字母产生转译符,如t,假诺您非要使用,可以利用\

地点路线被喻为相对路径:从根目录开端,拔尖拔尖查找文件,直到找到文件。

     此外还会有相对路线:在长期以来文件夹下,直接写文件名即可。

类名
    类名.类属性
   类名.方法名

实例 = 类名(参数,参数)  #实例就是对象

实例
    实例.方法名()
   实例.对象属性

实例增加属性
实例.新的属性名 = 1000
print(实例.新的属性名)

4.1操作文件流程:

操作文件前必得的难忘,文件以怎么着编码方式存款和储蓄,将要以什么编码形式展开,不然会比较轻松报错。

#1. 打开文件,得到文件句柄并赋值给一个变量
f=open('a.txt', mode = 'r', encoding='utf-8')   #默认打开模式就为r

#2. 通过句柄对文件进行操作
data=f.read()  # 读取文件内容
data = f.readlines()  # 读取文件的所有行,直至文件末尾,包括每行换行字符n,输出的是一个列表
data = f.readline()   # 一次只读取文件的一行,如果再在一个程序中使用它,python会记住当前位置,第二次使用会得到第二行 ,输出的是字符串
data = f.read(n)  # 在r模式下,read(n)按照字符去读取。在rb模式下,read(n)按照字节去读取。
循环读取:
f = open('log.txt',encoding='utf-8')
for i in f:
  print(i.strip())   # 每次读取一行,好处在于节省内存
f.close()

f.seek(0)   #如果使用了好几次readline,现在想退回到文件起始位置,可以使用该方法。其中括号里的数字是从文件起始位置算起的字节数
#3. 关闭文件
f.close()      #这个步骤很关键,可以帮助节省资源

关闭文件注意事项:
打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:

1、f.close() #回收操作系统级打开的文件
2、del f #回收应用程序级的变量
其中del f一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源,
而python自动的垃圾回收机制决定了我们无需考虑del f,这就要求我们,在操作完毕文件后,一定要记住f.close()


with关键字管理上下文:

#功能一:自动关闭文件句柄。
#功能二:一次性操作多个文件句柄。

with open('a.txt','w') as f: 
  pass 
with open('a.txt','r') as read_f,open('b.txt','w') as write_f: 
  data=read_f.read() 
  write_f.write(data)

   12、关于self

 4.2文件编码

f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,
操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。
若要保证不乱码,文件以什么方式存的,就要以什么方式打开。
f=open('a.txt','r',encoding='utf-8')
self:在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字.

对象/实例只有一种作用:属性引用

class 类名:
    def __init__(self,参数1,参数2):
        self.对象的属性1 = 参数1
        self.对象的属性2 = 参数2

    def 方法名(self):pass

    def 方法名2(self):pass

对象名 = 类名(1,2)  #对象就是实例,代表一个具体的东西
                  #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法
                  #括号里传参数,参数不需要传self,其他与init中的形参一一对应
                  #结果返回一个对象
对象名.对象的属性1   #查看对象的属性,直接用 对象名.属性名 即可
对象名.方法名()     #调用类中的方法,直接用 对象名.方法名() 即可

dir(类) #返回类中的所有名字列表
isinstance(对象,类) #判断对象是否为类的实例
print(Person.__dict__) # 返回一个字典 key是属性名,value是属性值
print(Person.__module__)  #person类所在的模块
print(Person.__name__,type(Person.__name__)) #字符串数据类型的类名

 4.3文本的展开方式

打开主要分两种类型:
文本文件:这些文件包含了文本,包括字母、数字、标点符号和一些特殊字符,如换行符。
二进制文件:这些文件不包含文本,它们可能包含音乐、图片或其他类型的数据。这些文件中不包含文件,所以没有行,不存在换行符。
      (间接性说明不能对二进制文件使用readline()或者readliners())
       # 大多数情况下,若果需要使用二进制文件,就要通过pygame或者其他一些模块来加载文件

#1. 打开文本文件模式有:
  • r, 只读情势【暗中认可方式,文件必需存在,不设有则抛出非常】
  • w, 只写情势【不可读;不设有则创制;存在则清空内容】
  • x, 只写情势【不可读;不设有则成立,存在则报错】
  • a, 追加格局【可读;荒诞不经则开创;存在则只增添内容】
#2. 对于非文本文件(二进制文件),我们只能使用b模式,"b"表示以字节的方式操作
(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
rb或r+b,读写
wb或w+b,写读
ab或a+b,写读
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

#3,‘+’模式(就是增加了一个功能)
r+, 先读,后追加。一定要先读后写
w+, 先写,后读(这个其实作用并不大,写完光标已经到最后,打印啥都没有,必须还需把光标移到前面才能读)
a+, 追加,再读(这个也一样)

练习,利用b模式,编写一个cp工具,要求如下:
既可以拷贝文本又可以拷贝视频,图片等文件

1 # b模式
2 f=open('1.jpg','rb')
3 data=f.read()
4 # print(data)
5 f=open('2.jpg','wb')
6 f.write(data)
7 print(data) 

黄金时代,用python创立三个新文件,内容是0到9的大背头,每一个数字占意气风发行

f = open('f.txt','w')
for i in range(0,10):
    f.write(str(i)+'n')

二,文件内容充实,从0到9的十个随机整数,每一种数字占用豆蔻梢头行

import random
f = open('a.txt', 'a')
for i in range(10):    #这一步作用在于让下面程序运行十次
    f.write(str(random.randint(0, 10)))
    f.write('n')    # 这一步其实也可以和上一步合并起来
f.close()

三、文件内容充实,从0到9的率性整数, 12个数字生机勃勃行,共10行

import random
f = open('f.txt','a')
for i in range(0,10):
    for i in range(0,10):
        f.write(str(random.randint(0,9)))
    f.write('n')
f.close()

 逐行读取文件内容的三种办法:

for line in open('f.txt'):
    print(line)

or:
f =open('f.txt','r')
lines =f.readlines()  
for i in lines:
    print(i)

     13、类命名空间与对象、实例的命名空间

4.4文件操作方法

           a、数见不鲜一个类就能制造四个类的称谓空间,用来储存类中定义的兼具名字,那个名字成为类的属性

4.4.0常用操作方法

 read(3):

  1. 文本张开药情势为文本格局时,代表读取3个字符

  2. 文本打开药格局为b方式时,代表读取3个字节

任何的公文内光标移动都以以字节为单位的如:seek,tell,truncate

注意:

  1. seek()是以bytes为单位活动的,根据字节调度光标地方

  2.tell()是按字节读取光标地方

  3. truncate是截断文件,所以文件的展开药方式必需可写,但是无法用w或w+等措施张开,因为那样直接清空文件了,所以truncate要在r+或a或a+等情势下测验效果。

1 import time
2 with open('test.txt','rb') as f:
3     f.seek(0,2)
4     while True:
5         line=f.readline()
6         if line:
7             print(line.decode('utf-8'))
8         else:
9             time.sleep(0.2)

           b、而类有三种属性:静态属性和动态属性

4.4.1 序列化

  程序运转中,全体变量都以在内存里面,能够每日更改变量,可是只要程序甘休,变量所占领的内部存款和储蓄器就能被操作系统全体回笼。改革后的变量若无积存到磁盘上,下一次开垦又会初叶化成原来的值。

  变量从内部存款和储蓄器中变为可存款和储蓄或可传输的经过称之为类别化(python中称之为packling)。连串化之后,就足以把内容写入磁盘,或通过网络传输到任何磁盘上

  •  静态属性就是直接在类中定义的变量
  • 动态属性就是概念在类中的方法

4.4.2 在文书中保存内容(文件的体系化)

》》》》》》》》模块链接

此间平日会用到pickle模块(它必须要用来python,差别的python版本之间或者也分裂盟)

抑或json模块(能够在区别的编制程序语言之间传递对象,并且json表示出来正是叁个字符串,可以被抱有语言代替)

eval内置函数:

  该函数能够把字符串充作可实践代码运营,不过安全性比较差,前边推荐使用hasattr映射

x, y, z = 43, 44, 45
S = 'splm'
D = {'a': 1, 'b': 2}
L = [1, 2, 3]

F = open('file.txt', 'w')
F.write(S + 'n')
F.write('%s%s%sn' % (x, y, x))
F.write(str(L) + '$' + str(D) + 'n')
F.close()    
# 通过以上步骤将内容写入文件中

chars = open('file.txt')    # 打开文件
line = chars.readline()    # 只读取一行
line_two = chars.readline()
line_three = chars.readline()
print(line_three)
parts = line_three.split('$')  
print(parts)     #   ['[1, 2, 3]', "{'a': 1, 'b': 2}n"]
print(eval(parts[1]))    #通过eval函数执行程序代码

temp = [eval(i) for i in parts]
print(temp)    #  [[1, 2, 3], {'a': 1, 'b': 2}]

创造一个对象/实例就能够创设一个对象/实例的名目空间,寄存对象/实例的名字,称为对象/实例的属性

 4.5 文件补充

图片 3

图片 4

容颜对象的结缘用法:

4.6文件的校正(利用os模块)

列出当前目录下的富有目录:

[x for x in os.listdir('.') if os.path.isdir(x)]

要列出全数的 .py 文件,也只需生机勃勃行代码:

[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']

重新组合指的是,在多个类中以其它一个类的对象作为数据属性,称为类的组

本文由澳门新葡亰平台官网发布于编程,转载请注明出处:Python之面向对象总括,操作下拉菜单

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。