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基础复习)
我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用模块化测试的测试模型,从某一程度也反映出熟练掌握一门编程语言的重要性。 为了后续进一步深入学习。本篇文章主要做下Python基础知识的复习。…...
2024新型数字政府综合解决方案(六)
新型数字政府综合解决方案通过融合人工智能、大数据、区块链和云计算技术,构建了一个全方位智能化的政务平台,旨在提升政府服务的效率、透明度和公众参与度。该方案实现了跨部门的数据互联互通与实时更新,利用先进的数据分析和自动化处理技术…...
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制作《扫雷》游戏-附源码,轻松看懂,简单易学
今天介绍另一款经典小游戏,扫雷,这个应该是很多人windows电脑里玩的最多的游戏了,乐趣很多,而且还有一定的技术含量在里面,今天我们就来通过python实现这个小游戏。 创建扫雷文件 打开pycharm,创建一个名…...
8路VBO转HDMI2.0支持4K60频率ITE6265芯片方案心得分享
在此之前,有人找到我这边询问能不能将智能电视主板改成机顶盒,将VBO信号转换输出位HDMI进行投屏,具体应用奇奇怪怪!但是奈何是甲方大佬。认命照做。从网上也有搜索了解过这类芯片,发现资料很少,所以有了这篇…...
【问题解决3】【已解决】Cannot determine path to‘tools.jar‘libraryfor17
前几天在IDEA运行JAVA项目时,出现这个报错。 这是因为是这个笔记本上安装的IDEA版本是“IntelliJ IDEA 2020.3.1”,与JDK17版本不兼容,这种情况下要想使得IDEA版本与JDK版本兼容,就需要升级IDEA版本或者使用JDK较低版本ÿ…...
基于Spring Boot的高效宠物购物平台
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...
【Vue3】路由基础
【Vue3】路由基础 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本…...
掌握网络数据的钥匙:Python Requests-HTML库深度解析
文章目录 掌握网络数据的钥匙:Python Requests-HTML库深度解析背景:为何选择Requests-HTML?什么是Requests-HTML?如何安装Requests-HTML?5个简单库函数的使用方法3个场景下库的使用示例常见Bug及解决方案总结 掌握网络…...
网络安全: 模型的脆弱性,鲁棒性和隐私性
在网络安全领域,通常描述模型安全性时,会提到以下三个特性: 脆弱性(Vulnerability):指模型在某些情况下容易受到攻击或被利用的弱点。例如,模型可能对对抗性攻击或梯度泄露攻击敏感。 鲁棒性&a…...
【go语言】go-webview2用法(持续更新)
文章目录 背景核心接口和方法扩展接口遗憾的是 背景 目前为止,已经有很多优秀的electron应用。但其特点也很明显:使用htmlcssjs构建的布局很精致,但是体积不容小觑(最新版electron-egg打包出来的程序已经300MB)。 vs…...
KNN 图像识别
KNN(K-Nearest Neighbors,K最近邻)算法是一种简单而有效的分类算法,也可以用于图像识别。它的基本思想是通过计算样本之间的距离,将待分类的样本归为其在训练集中最相近的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年冯诺依曼原理被提出,计算机数据和指令是通过二进制形式以及后来的汇编语言(二进制助记符),但依然没有改变容易出错的本质。1951年Rutishauser提出的用编译程序实现高级语言的思…...
vuex的原理和使用方法
简介 Vuex 是 Vue.js 应用的状态管理模式,它为应用内的所有组件提供集中式的状态(数据)管理。可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。 Vuex的构成 state:state 是 Vuex 的数据中心,也就是说state是用来…...
(javaweb)SpringBootWeb案例(毕业设计)案例--文件上传
1.简介 前端程序和服务端程序 对于前端 html文件放在static目录下 location---文件提交的位置 右键--copy value -------------c盘目录下 2.本地上传--文件存储 1. 2. 使用uuid:保证文件名是唯一的 此时 并没有文件的拓展名--所以需要---写后缀 用字符串截取 此时图…...
数据库之存储过程和函数
目录 一、存储过程和函数概述 二、创建并调用存储过程和函数 1.创建存储过程 2.创建存储函数 3.调用存储过程和函数 三、关于存储过程和函数的表达式 1.变量 1.变量的分类 2.在存储过程和函数中应用变量 2.定义条件和处理程序 1.定义条件 2.定义处理程序 3.游标的…...
《SPSS零基础入门教程》学习笔记——02.数据管理
文章目录 2.1 连续变量的离散化2.2 自动重编码、编秩与数值计数2.3 几个常用过程2.4 多个数据文件的操作2.5 数据字典2.6 数据核查(1)数据验证模块(2)数据检验 2.7 数据准备 计算新变量(转换 -> 计算变量࿰…...
嵌入式软件的一些常用调试测试方法
嵌入式软件的仿真调试测试是确保软件质量和功能正确性的关键步骤。以下是几种常见的仿真调试测试方式: 1.集成开发环境(IDE)调试: 使用IDE(如IAR EWARM、Keil MDK、Eclipse等)内置的调试器进行断点设置、单…...
Android T about screen rotation(二)
需求:客户因为模具问题,屏幕方向需要动态的变动.(方向: 0 , 90 , 180 ,270) 拆分:设备开机过程中图像显示可分为三个阶段,boot logo(1)->kernel logo(2),这一段的处理需要驱动层,所以暂时忽略. 开机动画 Bootanimation(3)阶段 和 Home Launcher应用显示(4)阶段是需要修改的…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
