当前位置: 首页 > news >正文

Selenium + Python 自动化测试16(Python基础复习)

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了使用模块化测试的测试模型,从某一程度也反映出熟练掌握一门编程语言的重要性。

         为了后续进一步深入学习。本篇文章主要做下Python基础知识的复习。大家也可以参考着练习一遍,可以快速低恢复编写基本代码的能力。适用于一段时间没有使用python,现在做自动化测试要用到的情况。也适用面试前的准备。

一、输出与输入

1、print()

看例子学习:

print("hello selenium")  #无参数输出
name = 'dewi'
print("my name is %s"%name) #带参数输出,字符串
number=6
print("my enter number is %d"%number) #带参数输出,数字

print("my name is %s,and i enter number is %d"%(name,number))#两个参数输出

2、input 输入
favourite_color = input("pls enter your color you like:")print("your favourite color is %r"%favourite_color) #不确定输入的内容,输出可以用%r

二、python 数据类型

数据类型:包含数字、字符串、列表、元组、字典

1、数字

数字是较广泛的数据类型:

整形    int       如: 1

浮点数  float    如: 2.1

长整型  long     如:1L, 当一个整数后面有L,那么就是长整型

正因为2版本整型的不严谨,python 3 版本取消了长整型。

print(float(5))   #类型转换,整型转化为浮点型

数字运算:

数字的运算符:+  -   *  /  % 取余  **求方  // 整除

print(1+1)   print(4/2#除法,结果2.0print(4//3) #整除,结果1print(4%3#取余,结果1

2、字符串

定义:字符串是有序的,不可修改的,元素以引号包围的序列

符号:' ' 单引号   " "  双引号   ''' '''  三单  """  """  三双

用不同的引号可以避免字符串中有'   "  等符号的情况,交叉使用

a = "abcdefg"print(a[1])     #输出为b,序号从0开始

#截取,有下限没有上限a="abcdefg"print(a[1:3])     #打印出bc

3、列表

字符串是一个不可以修改的序列,当我们对字符串修改的时候,实际上是生成了一个新的被修改的对象,而原字符串没有变化。但是列表是一个可以修改的序列,会修改到他本身

所以,我们需要变量指出。

赋值有三种:

1,直接赋值  a = 1

2,链式赋值   a = b =1

3, 序列解包赋值   a,b = 1,2   等号左边的和右边的值数量要一致

列表定义:是一个有序的,可以修改的,元素以逗号分隔,以中括号包围的序列。

列表的定义:

(1)list

(2)[ ]

(3)range

(4)xrange

python 3 取消了xrange,  range 和xrange 效果一样

list1=['a','b','c','d','e','f']
print(list1[3]) #输出d

#列表的修改
ourlist = list('12345')
print(ourlist)
ourlist[0] = 'a'
print(ourlist)

输出:['a', '2', '3', '4', '5']

4、元组

元组的定义:元组是元素以逗号分隔,以小括号包围的有序的,不可以修改的序列。

ourtuple=tuple("12345")
print(ourtuple)
输出:('1', '2', '3', '4', '5')

元组和字符串的区别:都是不可以修改的序列,

元组的元素可以使用任何元素,字符串的元素为字符

元组的元素长度可以是任意的,字符串的元素长度只能为1

5、字典

字典定义:一个无序的,可以修改的序列

元素键值对的形式,以大括号包围的无序的序列。字典是python的基础数据类型当中唯一一个映射关系的数据类型,通常对应JSON。

  定义:{1:“a”,2:"b",3:"c"}

  zip  函数 将几个序列对应索引上的元素分到一个元组当中,形成一个大元组,子元组的个数取决于最短序列的长度

mydict = {'name':'zhangdan','password':888888}
print(mydict)
print(mydict.keys())
print(mydict.values())

输出:

dict_keys(['name', 'password'])

dict_values(['zhangdan', 888888])

字典的特点

因为字典是无序的,所以字典没有索引值,因为字典没有索引值,所以字典以键取值,字典的键相当于列表的索引

因为字典以键取值,所以字典的键唯一且不可以修改。不可以重复

字典的方法:

字典到的取值

Keys

获取字典所有的键

values

获取字典所有的值

#循环打印key,value值for key,value in mydict.items():print("mydict keys is %r"%key)print("mydict values is %r" % value)

输出:

mydict keys is 'name'

mydict values is 'zhangdan'

mydict keys is 'password'

mydict values is 888888

#zip 方法举例keys =["d",'c','a']values=[3,5,7]for key,value in zip(keys,values):print(key,value)

输出:

d 3

c 5

a 7

三、流程控制

1、if语句

if  语句:

if语句判断语句,只有满足if 条件才执行if下的语句块

if   elif   else

if(条件):

    block  语句块

elif(条件):                       #可以有多个

    block  语句块

else:

    block 语句块

#举例,if   elif  else 用法scores = 88if scores>90:print("A")elif scores>80:print("B")elif scores>70:print("C")elif scores>60:print("D")else:print("E")

2、for 循环

python  当中的for循环,与其他语言不通。

其它语言:

for(var int  i =1;i<6;i++)

{

         block

}

python 语言: 

for  in 结构

for  变量  in   可迭代对象:

         block

for 循环实质上是将后面可以迭代的对象元素依次赋值给前面的变量,每赋值一次就执行一次

#for 用法举例for i in range(1,10,2):    #1-10,不包括10,步长2print(i)

输出:1、3、5、7、9

四、函数和类

1、函数

定义:就是将我们要执行的代码进行结构整合,形成可以被调用的代码块,这个代码块就是函数

函数是可以重复调用的代码块

函数比较代码复制:

1,减少冗余代码

2,代码结构清晰

3,有助于保持代码的一致性

函数包含内容如下:

1)关键字  def 

2) 函数名  :字母开头,不允许有关键字,不允许有特殊符号,不允许有莫名其妙的a,b等函数名

3)参数:定义在参数括号里,调用时传入,作用在函数内部的变量

(1)如果有写在括号中

(2)没有就写空括号

4)内容块

#函数举例def add(m,n):return m+nprint(add(6,9))  #输出15

2、类和实例

1)类的结构形式:

class person(object):

    #类的语句块

    pass

#class 类名(基类):

#object是我们python里面所有类的基类

# person是有object发展而来。3.0默认全部继承object类

2)类的实例

#新建一个符合这个类的标准的一个类的实例对象

#类的实例就是: 实例 = 类名()

xiaohong = person()

xiaoming = person()

#类的成员函数是定义在类这个块里,说明:

(1)第一个参数是self,

(2)调用成员函数不一样

(3)类的成员函数是一个全局的函数,全局唯一,不会随着类的实例化多个而出现多个

(4)@property 修饰的方法或成员函数

      1,方法必须只能self参数,不能有其他

      2,方法调用时不可以写()

3)简单点的例子:

class Cal(object):def __init__(self,m,n):self.m = mself.n = ndef add(self):return self.m+self.n calculate = Cal(7,8)print(calculate.add())

输出:15

4)复杂点的例子:

类的实例:

1,类的实例有一个字典对象,用来保存key,value

2,可以在类的成员函数中使用self.key来访问和存储类的实例的成员变量

3.外部直接可以使用对象的实例.数据成员来获取数据成员的值

dir 函数

1.不带参数时,返回当前范围内的变量,方法和定义的类型列表

2.带参数时,返回参数的属性、方法列表

3.dir(类的实例)里面有一个__dict__的字典,原来存的都是类实例的数据成员

例如:

class person(object):def init_person(self, age, name, sex):self.age = ageself.name = nameself.sex = sexprint(self.name)@propertydef get_age(self):print(self.age)passpass# 新建一个符合这个类的标准的一个类的实例对象# 类的实例就是 实例 = 类名()xiaohong = person()xiaoming = person()# 类的成员函数# 调用成员函数不一样,完成具体的事情# 类的实例.函数名称(参数)# 类的成员函数调用的时候不用我们传self参数,python解释器在执行的时候默认传递# self传的类的实例# self 会在函数调用的时候传递xiaohong.init_person(10, "xiaohong", "girl")xiaoming.init_person(11, "xiaoming", "boy")# 错误的调用xiaoming.get_age()xiaoming.get_age      #正确调用# 调用成员变量print(xiaohong.sex)print(dir())print(dir(xiaohong))print(xiaohong.__dict__)print(xiaoming.__dict__)

输出:

xiaohong

xiaoming

11

girl

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'add', 'i', 'key', 'keys', 'list1', 'mydict', 'name', 'number', 'ourlist', 'ourtuple', 'person', 'scores', 'value', 'values', 'xiaohong', 'xiaoming']

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'get_age', 'init_person', 'name', 'sex']

{'age': 10, 'name': 'xiaohong', 'sex': 'girl'}

{'age': 11, 'name': 'xiaoming', 'sex': 'boy'}

今天就先学习到这里吧。

每天进步一点点,加油!

相关文章:

Selenium + Python 自动化测试16(Python基础复习)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用模块化测试的测试模型&#xff0c;从某一程度也反映出熟练掌握一门编程语言的重要性。 为了后续进一步深入学习。本篇文章主要做下Python基础知识的复习。…...

2024新型数字政府综合解决方案(六)

新型数字政府综合解决方案通过融合人工智能、大数据、区块链和云计算技术&#xff0c;构建了一个全方位智能化的政务平台&#xff0c;旨在提升政府服务的效率、透明度和公众参与度。该方案实现了跨部门的数据互联互通与实时更新&#xff0c;利用先进的数据分析和自动化处理技术…...

vscode的C/C++环境配置和调试技巧

目录 1.背景 2.下载编译器 3.配置环境变量 4.安装C/C插件 5.写C语言代码并且编译成功 5.1文件操作 5.2对于两个窗口的解释 5.3C语言编译环境配置 6.创建执行文件 7.编译运行过程 8.写其他的代码的解决方案一 9.写其他的代码的解决方案二 10.同时编译多个.c文件 10…...

Python制作《扫雷》游戏-附源码,轻松看懂,简单易学

今天介绍另一款经典小游戏&#xff0c;扫雷&#xff0c;这个应该是很多人windows电脑里玩的最多的游戏了&#xff0c;乐趣很多&#xff0c;而且还有一定的技术含量在里面&#xff0c;今天我们就来通过python实现这个小游戏。 创建扫雷文件 打开pycharm&#xff0c;创建一个名…...

8路VBO转HDMI2.0支持4K60频率ITE6265芯片方案心得分享

在此之前&#xff0c;有人找到我这边询问能不能将智能电视主板改成机顶盒&#xff0c;将VBO信号转换输出位HDMI进行投屏&#xff0c;具体应用奇奇怪怪&#xff01;但是奈何是甲方大佬。认命照做。从网上也有搜索了解过这类芯片&#xff0c;发现资料很少&#xff0c;所以有了这篇…...

【问题解决3】【已解决】Cannot determine path to‘tools.jar‘libraryfor17

前几天在IDEA运行JAVA项目时&#xff0c;出现这个报错。 这是因为是这个笔记本上安装的IDEA版本是“IntelliJ IDEA 2020.3.1”&#xff0c;与JDK17版本不兼容&#xff0c;这种情况下要想使得IDEA版本与JDK版本兼容&#xff0c;就需要升级IDEA版本或者使用JDK较低版本&#xff…...

基于Spring Boot的高效宠物购物平台

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…...

【Vue3】路由基础

【Vue3】路由基础 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本…...

掌握网络数据的钥匙:Python Requests-HTML库深度解析

文章目录 掌握网络数据的钥匙&#xff1a;Python Requests-HTML库深度解析背景&#xff1a;为何选择Requests-HTML&#xff1f;什么是Requests-HTML&#xff1f;如何安装Requests-HTML&#xff1f;5个简单库函数的使用方法3个场景下库的使用示例常见Bug及解决方案总结 掌握网络…...

网络安全: 模型的脆弱性,鲁棒性和隐私性

在网络安全领域&#xff0c;通常描述模型安全性时&#xff0c;会提到以下三个特性&#xff1a; 脆弱性&#xff08;Vulnerability&#xff09;&#xff1a;指模型在某些情况下容易受到攻击或被利用的弱点。例如&#xff0c;模型可能对对抗性攻击或梯度泄露攻击敏感。 鲁棒性&a…...

【go语言】go-webview2用法(持续更新)

文章目录 背景核心接口和方法扩展接口遗憾的是 背景 目前为止&#xff0c;已经有很多优秀的electron应用。但其特点也很明显&#xff1a;使用htmlcssjs构建的布局很精致&#xff0c;但是体积不容小觑&#xff08;最新版electron-egg打包出来的程序已经300MB&#xff09;。 vs…...

KNN 图像识别

KNN&#xff08;K-Nearest Neighbors&#xff0c;K最近邻&#xff09;算法是一种简单而有效的分类算法&#xff0c;也可以用于图像识别。它的基本思想是通过计算样本之间的距离&#xff0c;将待分类的样本归为其在训练集中最相近的K个样本所属的类别中最常见的类别 1. 准备工作…...

基于STM32和云平台的花卉养护系统设计(微信小程序)(209)

文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】选题背景【6】国内外技术发展现状1.4 开发工具的…...

编程语言进化史

编程语言多到你想象不到。 图片来自: 程序设计语言概念 发展历史 自从1946年冯诺依曼原理被提出&#xff0c;计算机数据和指令是通过二进制形式以及后来的汇编语言(二进制助记符)&#xff0c;但依然没有改变容易出错的本质。1951年Rutishauser提出的用编译程序实现高级语言的思…...

vuex的原理和使用方法

简介 Vuex 是 Vue.js 应用的状态管理模式&#xff0c;它为应用内的所有组件提供集中式的状态&#xff08;数据&#xff09;管理。可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。 Vuex的构成 state&#xff1a;state 是 Vuex 的数据中心&#xff0c;也就是说state是用来…...

(javaweb)SpringBootWeb案例(毕业设计)案例--文件上传

1.简介 前端程序和服务端程序 对于前端 html文件放在static目录下 location---文件提交的位置 右键--copy value -------------c盘目录下 2.本地上传--文件存储 1. 2. 使用uuid&#xff1a;保证文件名是唯一的 此时 并没有文件的拓展名--所以需要---写后缀 用字符串截取 此时图…...

数据库之存储过程和函数

目录 一、存储过程和函数概述 二、创建并调用存储过程和函数 1.创建存储过程 2.创建存储函数 3.调用存储过程和函数 三、关于存储过程和函数的表达式 1.变量 1.变量的分类 2.在存储过程和函数中应用变量 2.定义条件和处理程序 1.定义条件 2.定义处理程序 3.游标的…...

《SPSS零基础入门教程》学习笔记——02.数据管理

文章目录 2.1 连续变量的离散化2.2 自动重编码、编秩与数值计数2.3 几个常用过程2.4 多个数据文件的操作2.5 数据字典2.6 数据核查&#xff08;1&#xff09;数据验证模块&#xff08;2&#xff09;数据检验 2.7 数据准备 计算新变量&#xff08;转换 -> 计算变量&#xff0…...

嵌入式软件的一些常用调试测试方法

嵌入式软件的仿真调试测试是确保软件质量和功能正确性的关键步骤。以下是几种常见的仿真调试测试方式&#xff1a; 1.集成开发环境&#xff08;IDE&#xff09;调试&#xff1a; 使用IDE&#xff08;如IAR EWARM、Keil MDK、Eclipse等&#xff09;内置的调试器进行断点设置、单…...

Android T about screen rotation(二)

需求:客户因为模具问题,屏幕方向需要动态的变动.(方向: 0 , 90 , 180 ,270) 拆分:设备开机过程中图像显示可分为三个阶段,boot logo(1)->kernel logo(2),这一段的处理需要驱动层,所以暂时忽略. 开机动画 Bootanimation(3)阶段 和 Home Launcher应用显示(4)阶段是需要修改的…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...