自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 selenium 数据驱动框架自动化从0到1–9

selenium 数据驱动框架自动化从0到1–9等了很久了吧?感谢你从头坚持学到这里,[上一篇我们配置了日志](https://blog.csdn.net/zhangguangyi520/article/details/109910932),这篇我们就正式写添加联系人的测试逻辑, 不啰嗦,直接上代码:在test_scripts包下创建一个test_126email_contact_person文件,代码如下:#encoding = utf-8from util.open_browser imp

2020-12-30 22:11:01 172

原创 selenium 数据驱动框架自动化从0到1--8

selenium 数据驱动框架自动化从0到1–8前面2篇我们讲了数据源的设计与解析excel 文件的方法封装,这篇我们说说日志的配置与初始化日志是代码的一部分,有了它,在出现问题时我们能准确的定位。在用例执行失败时,我们清楚的知道那条用例执行失败了,什么时间执行的,错误是什么的详细信息。logging模块有三个比较重要的功能组件:具体详情查看https://docs.python.org/2/howto/logging.htmlloggers 配置文件可定义一些输出日志的appnamehandl

2020-12-08 23:14:55 164

原创 selenium 数据驱动框架自动化从0到1--7

selenium 数据驱动框架自动化从0到1–7上一篇我们做了数据源的设计与配置,这一篇我们就来说一下解析excel 文件的方法封装在util 包下新建一个excelParse.py 文件用来实现解析excel 文件的方法封装,作为一个工具类可直接使用,代码如下:#encoding = utf-8from openpyxl import load_workbookfrom openpyxl.styles import Font, PatternFill #字体颜色和背景from typin

2020-11-21 22:38:29 161

原创 selenium 数据驱动框架自动化从0到1--6

selenium 数据驱动框架自动化从0到1–6上一篇我们完成了页面元素表达式与代码的分离,但执行一次只能添加一个联系人,那我们怎样才能执行一次 ,添加我们需要的数据呢?把添加的数据储存在excel 文件里,然后去读文件,这样就解决了,那问题来了,excel 文件我们该怎样设计呢?在工程TestContactData下新建一个名为testData包,在testData包下新建一个名为 “126邮箱联系人.xlsx” 的excel文件,并在excel 文件中创建2个工作表分别为 “126账号”,“联系人

2020-11-21 17:49:25 152

原创 selenium 数据驱动框架自动化从0到1--5

selenium 数据驱动框架自动化从0到1–5上一篇我们把页面元素的元素表达式提取出放在了一个配置文件里,也封装了解析文件的工具,于是我们这篇就继续改造哪3个涉及页面元素表达式的页面。代码如下:一,登录页面元素原封装代码如下:#encoding = utf-8from util.getObjectMap import * #导入工具class LoginPage(object): def __init__(self,driver): #构造方法初始化 self

2020-11-14 20:00:30 177

原创 selenium 数据驱动框架自动化从0到1--4

selenium 数据驱动框架自动化从0到1–4前几篇我们把模块都封装了,但还是没有实现页面元素表达式和代码完全分离,如果页面有改动,我们需要花大量时间来维护,于是这篇我们把页面元素表达式提取出来放在一个配置文件里。在config包下创建一个testPageExpression.ini 配置文件。文件内容如下:把所有页面的页面元素表达式都提取出来统一管理。[login_page] #登录页面元素表达式#获取framelp_frame = xpath>//iframe[contai

2020-11-13 21:17:31 172

原创 selenium 数据驱动框架自动化从0到1--3

selenium 数据驱动框架自动化从0到1–3上一篇我们没有把链路上的页面封装完,这篇继续封装,上一篇封装后的代码如下:#encoding = utf-8from appModules.loginAction import *from util.openBrowser import *#创建chrome浏览器实例driver = OpenBrowser()lg = LoginAction()lg.login(driver,'abc_123456qwe','abc_123456')#

2020-11-13 00:27:38 263

原创 selenium 数据驱动框架自动化从0到1--2

selenium 数据驱动框架自动化从0到1–2结合上一篇,我们继续根据正常流程,封装模块上一篇代码如下:#encoding = utf-8from util.getObjectMap import *from util.openBrowser import *#创建chrome浏览器实例driver = OpenBrowser()#由于登录页面元素是嵌套页面,所以要切换frame,切换到frame 控件frame = getElement(driver,'xpath',"//if

2020-11-11 20:47:18 225

原创 selenium 数据驱动框架自动化从0到1--1

selenium 数据驱动框架自动化从0到1前言上一篇我们根据业务线写了如何添加一个联系人。这篇我们接上篇把每次重复写的代码做一次封装提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport se

2020-11-11 00:17:01 240

原创 selenium 数据驱动框架自动化从0到1---0

selenium 数据驱动框架自动化从0到1说明:本文是教一个小白如何搭建一个excel数据驱动框架,从0到1。,搭建一个框架需要很多步骤,先把步骤列一下,希望是小白的你自己亲手按步骤操作一遍,这样有助于学习:一,正常添加流程 (无框架)二,根据正常流程,封装一些常用工具三,根据正常流程,封装模块 (初步框架模型)四,实现页面元素表达式和程序代码分离五,实现测试数据与代码分离 (最终模型)测试目的:126邮箱登陆后添加联系人测试数据准备:登录账号 (自己可

2020-11-11 00:13:30 283

原创 selenium 数据驱动框架自动化从0到1–10(发送邮件的封装)

#encoding=utf-8from util.config_file_parse import *import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.image import MIMEImagefrom email.header import Headerfrom util.date_time import *fro

2022-03-03 17:59:38 502

原创 开发面试题及算法思想(二)

二,控制流#习题1:设定一个用户名和密码,用户输入正确的用户名和密码,则显示登录成功,否则提示登录失败,用户最多失败3次,否则退出程序。'''1,定义2个变量,username,password2,用input 获取用户输入的用户名和密码3,用for 循环限定次数, 用 if 条件语句判断输入的用户名和密码是否正确'''uesrname = '1'password = '1'for i in range(3): username = input('please input y

2021-12-23 18:17:14 374

原创 开发面试题及算法思想(一)

#习题1:一个列表,排重,不能用set,也不能用字典'''1,创建一个空列表result,储存排序后的结果2,遍历列表l,判断列表l元素是否存在列表result里,3,存在,不做处理,不存在,添加在列表result里,打印列表result'''result=[]l=[1,2,2,2,3,6,4,77,8]for i in l: if i not in result: result.append(i)print(result)#习题2:输出大写字母、小写字母.

2021-12-21 17:28:29 408

原创 MYSQL数据库的基本操作八(存储函数)

一,存储函数的创建,调用,查看,修改,删除二,变量(和存储过程一样)三,定义条件及处理程序(和存储过程一样)四,光标(和存储过程一样)五,流程控制(和存储过程有差异)

2021-12-16 17:25:16 1687

原创 MYSQL数据库的基本操作七(存储过程)

一,存储过程的创建语法 1,存储过程创建 delimiter // create procedure pr_name([proc_parameter]) [characteristic ...] #存储过程特性,创建时一般省略,默认系统设置 begin ...

2021-12-10 14:01:45 1118

原创 MYSQL数据库的基本操作六(索引)

一,索引 1>> 索引的定义:索引是一个单独的,存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。通过索引能快速找出某个或多个列中有一特定值的行。 2>>使用索引的优缺点 优点:1,通过创建唯一索引,可以保证数据库表中每一行的数据的唯一性。 2,可以大大加快查询速度。 3,在实现数据的参考完整性方面,可以加速表与表之间的连接。 4,...

2021-12-02 17:51:02 1489

原创 MYSQL数据库的基本操作五(mysql 常用函数二)

一,日期时间函数函数名 表达式 取值 返回结果 获取当前日期和获取当前时间 curdate() current_date() curtime() current_time() curdate() 与 current_date() 作用相同 +0 curtime() 与 current_time() 作用相同+0 2021-11-...

2021-11-30 15:08:31 648

原创 MYSQL 时间格式化表格 和计算日期时间格式

MYSQL 时间格式化表格

2021-11-29 15:39:11 213

原创 MYSQL数据库的基本操作四(mysql 常用函数一)

一,数学函数 函数名 函数表达式 取值 返回结果 绝对值 abs(x) abs(-2.5),abs(17) 2.5,17 圆周率 PI() PI() 默认6位 3.141593 平方根 sqrt(x) sqrt(16) ,sqrt(81),sqrt(-81) 4,9,NULL 求余 mod(x,y) mod(31,8),mod(243,10),mod(45.5,6) ...

2021-11-26 11:52:46 580

原创 MYSQL数据库的基本操作三( 数据类型及运算符)

一,数据类型 1> 整数类型 int(5) 5指的是显示宽度(显示的数字个数,不是取值范围) 类型名称 说明 存储需求 取值范围 有符号 取值范围 无符号 tinyint 很小的整数 1字节 -128~127 0~255 smallint 小的整数 2字节 -32768~32767 0~65535 mediumint ...

2021-11-23 18:14:03 592

原创 MYSQL数据库的基本操作二(建表)

一,创建数据表 1> 选库 (建表之前要选库) use xxx( 数据库名) 2> 创建表 (列级别的约束) create table test1 ( id int(11) primary key auto_increment, # 主键约束 ,自增 name varchar(25) not null, # 非空约束 deptid int(11)

2021-11-18 16:36:59 765

原创 MYSQL数据库的基本操作一(建库选存储引擎)

一,创建数据库create database xxx(数据库名称)二,查看当前存在的所有数据库show databases三, 删除数据库drop database xxx(数据库名称)四,数据库存储引擎1> 查看引擎 show engines2>InnoDB 存储引擎 InnoDB 是事务性数据库的首选引擎,支持事务安全表(ACID,ACID是原子性(atomicity /ˌætəˈmɪsəti/)、一致性(consistency...

2021-11-17 11:07:48 772

原创 关键字封装-接口请求(post,get)

提示:关键字封装-post请求#encoding=utf-8from util.get_log import *import jsonimport requestslg = GetLog().log()def post_request(url,data,headers=None,timeout=None,files=None): if isinstance(data,dict): data = json.dumps(data) #把字典格式转换为json格式,如果不要

2021-03-12 22:01:45 242

原创 关键字封装-断言结果

提示:关键字封装-断言结果get_log 封装详见selenium 数据驱动框架自动化从0到1–8#encoding=utf-8from util.get_log import * lg = GetLog().log()def assert_result(response, key_word): global lg try: assert key_word in response.text #判断返回值是否包含断言关键字 lg.info

2021-03-12 21:16:44 167

原创 关键字封装-唯一数

提示:用文件创建不重复的唯一数,可用在需要唯一数的地方文章目录1,创建一个test_file包,存放唯一数初始值->数值型2,在test_file包下创建一个var_test_file_path.py文件,存放文件地址3,在util包下创建一个get_uniquenumber.py文件总结1,创建一个test_file包,存放唯一数初始值->数值型代码如下(示例):例如:在test_file包下创建一个uniquenumber.txt文件,里面写入初始数值2,在test_file

2021-03-12 20:39:39 99

原创 关键字封装-创建日,时文件夹用于存放Log日志或截图

关键字封装-创建日,时文件夹用于存放Log日志或截图日期和时间的封装见日期时间应用代码如下(示例):#encoding=utf-8from config.var_config_path import *from util.date_time import *def screenshot_file_path(): year_file_path = os.path.join(screenshot_path, get_current_year()) month_file_path

2021-03-10 20:25:53 85

原创 关键字封装-MD5加密

MD5加密#encoding=utf-8import hashlibdef md5(data): '''MD5加密数据''' m5 = hashlib.md5() m5.update(data.encode('utf-8')) md5_data = m5.hexdigest() return md5_dataif __name__ == '__main__': print(md5('123456'))

2021-03-08 16:55:22 153

原创 简单的日期时间应用

日期时间封装封装了一些时间日期,方便后边用到#encoding=utf-8import timedef get_chinese_current_date(): #获取中式当前时间年月日 year = str(time.localtime().tm_year) if time.localtime().tm_mon < 10: month = '0'+str(time.localtime().tm_mon) else: month =

2021-02-07 21:26:48 330 1

原创 Longin 日志配置文件

在config 包下新建一个名为Logger.conf 的文件,用于配置日志基本信息,以后工程可直接使用,具体内容如下:#logger.conf#########################################[loggers] #固定写法keys = root,example01,example02 #创建三个app名,root是父类,必需存在的[logger_root]level =DEBUG #设置日志级别handlers = hander01,ha

2021-01-24 17:20:38 184 2

原创 WebDriver API 详解-中

WebDriver API 详解这里列了一些WebDriver API 的详细步骤,共3部分,初级,中级,高级供参考,也可以直接使用文章目录WebDriver API 详解一、初级API详解二、中级API详解1.操作单选下拉列表-遍历所有选项并打印选项文本和选项值2.读入数据总结一、初级API详解二、中级API详解1.操作单选下拉列表-遍历所有选项并打印选项文本和选项值代码如下(示例):#encoding = utf-8from selenium import webdriver

2021-01-24 16:57:01 368 1

原创 python创建解析XML

python创建解析XMLXML 的存储方式虽然目前很少用,但我们还是的掌握其基本的创建和解析方法,在有些项目中还是能用到。文章目录python创建解析XML一、XML 的创建1,创建步骤:二、XML的解析1.解析步骤总结一、XML 的创建1,创建步骤:1,在内存中创建一个空文档对象2,创建一个根节点对象并设置其属性,将其添加在文档对象中3,创建叶子节点对象并设置其属性,将其添加在父节点对象中(根节点)4,创建嵌套叶子节点(孙节点)对象并设置其属性或添加文本对象,将其添加在父节点对

2021-01-10 00:17:40 159 1

原创 WebDriver API 详解-初

WebDriver API 详解这里列了一些WebDriver API 的详细步骤,共3部分,初级,中级,高级供参考,也可以直接使用文章目录WebDriver API 详解一、初级API 使用步骤1.访问某个网址2.网页的前进和后退3.刷新当前网页4.浏览器窗口最大化5.获取并设置当前窗口的位置6.获取并设置当前窗口的大小7.获取页面title属性值总结一、初级API 使用步骤1.访问某个网址代码如下(示例):#encoding = utf-8from selenium import

2021-01-06 20:43:22 872 1

原创 数据库表的常用操作

#coding:utf-8# 1,授权'''1,授权:GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'gloryroad' WITH GRANT OPTION;FLUSH PRIVILEGES;*.*中的第一个星,表示所有的数据库,如果指定一个数据库test.*第二个星,表示所有的表ALL PRIVILEGES:所有的权限都开通某几个权限:grant select,create,drop,update,alter on

2020-12-21 21:48:48 246

原创 python 常用的几种定位方式

Python常用的几种定位方法一,python 常用的8种定位方法1,使用 ID定位    driver.find_element_by _id('ID 值') driver.find_element(by ='id',value ='ID值')2,使用 name定位单个元素 driver.find_element_by_name('name值') driver.find_e

2020-12-17 23:47:14 8320

原创 python操作EXCEL的相关笔记

python操作EXCEL(.xlsx)的相关笔记下面代码是python 操作Excel (.xlsx) 的常用功能#encoding = utf-8# 一、安装'''pip install openpyxl==2.5.4想要在文件中插入图片文件,需要安装pillow'''# 二,创建一个excel文件,并写入不同内容,创建的文件不保存只是在内存,看不见。from openpyxl import Workbookimport localeimport timeimport

2020-11-18 15:27:19 157

原创 web端功能测试的简单总结

web端功能测试的简单总结做功能测试经常与前端打交道,做UI自动化也要抓元素属性,于是今天我把CSS常用的属性和一些常见的功能逻辑列在了下面,方便学习。 **一、静态页面**1,文字: 类型(font-family), 大小(font-size) , 颜色(color), 风格(font-style), 粗细(font-weight),2,段落: 首行缩进(text-indent),水平对齐(text-align), 文本修饰(上中下划线text

2020-11-14 09:12:57 278

转载 Linux常用命令大全

Linux常用命令大全(非常全!!!)原文来自https://www.cnblogs.com/yjd_hycf_space/p/7730690.html系统信息arch 显示机器的处理器架构uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/c

2020-11-11 10:21:13 208

原创 python接口自动化框架从0到1-Execl数据源驱动

python 的学习总结——元组以前学习不知道总结,也不知道去复习,到用的时候发现自己还是小白,于是我今天开始尝试记录笔记到这里供自己以后复习。一、元组的创建1> 使用赋值运算符直接创建元组tuplename=(414355,‘gj’,35,[1,‘34’],(2,‘ytu’)) #元素可以为整数,实数,字符串,元组,列表emptytuple=() #空元组2> 元组与字符串的区别verae=‘sfsd’,‘dsfd’,‘sgf’ #元组print(type(ver

2020-11-06 00:07:21 140

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除