- 博客(46)
- 资源 (2)
- 收藏
- 关注
原创 自动化测试之Python+selenium
Selenium1、什么是自动化测试?通俗定义:编程测试,编写一段程序来测试另外一个程序,即将测试任务交给计算机来完成。广义定义:所有需要借助于工具进行辅助测试的方法,都可以称之为自动化测试。2、为什么要做自动化测试?1)较少手工测试中重复性工作2)提高测试用例的执行效率 996 可以使用自动化测试来空闲利用起来3)一定程度上节省了企业的人力成本4)可用于大量测试数据的生成 200M5)可用于完成手工测试很难实现的一些测试场景,比如:多用户操作12306 .
2021-11-09 15:38:44 2125 2
原创 get和post的区别
get和post的区别http(超文本传输协议)设计的目的是保证客户端与服务器之间的通信,工作方式是客户机与服务器之间的请求-应答协议。两种http请求方式:get 和postget:从指定的资源请求数据post:像指定的资源提交要被处理的数据get和post的区别如下:...
2022-02-17 19:25:05 1694 2
原创 Postman中的变量
Postman中总共有三种变量Postman工具介绍以及使用方法教程一、环境变量·环境变量的创建步骤:1、点击postman右上角的图标2、点击“Add”按钮,然后输入环境变量的名称 在 “VARIABLE”列中输入环境变量的变量名,在“CURRENT VALUE”列中输入变量值3、点击界面右下角“Add”按钮完成环境变量的创建·查看环境变量步骤:1、在postman右上角点击图标选择要查看的环境变量的名称2、在postman右上角点击图标,就可以查看到环境变量的内容·环境变量
2022-02-11 14:50:28 16157
原创 Postman工具介绍以及使用方法教程(一)
Postman工具1、postman简介Postman最早是Google浏览器的一个插件存在的,因为Google退出国内市场,现在postman主要是以一个 APP的形式存在。Postman最初设计上就是为接口测试而设计的,对于测试人员来说主要用来做接口测试。2、postman的功能·postman是一款强大的网页调试、HTTP请求发送及接口测试用例运行的工具·能够模拟各种HTTP的请求方式,比如:GET、POST、DELETE、PUT等请求方式·请求中可以发送文件(图片、文本文件等)、额外的
2022-01-11 19:47:53 21268 6
原创 Linux 系统-----vim命令详解
vim命令详解Linux vi/vim所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。相关文章:史上最全Vim快捷键键位图 — 入门到进阶什么是 vim?Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了
2021-12-30 16:49:59 7296
原创 Linux 系统-----文件相关操作命令
文件相关操作1》touch 创建文件注意:linux中文件没有后缀语法:touch 文件名2》echo在显示器上显示一段文字,一般起到了提示的作用,此为,也可以直接在文件中写入内容语法:echo 显示的内容写入文件:覆盖写:将想要写的内容覆盖到对应的文件中去,文件当中之前的内容不复存在语法:echo 想要写入的内容 > 文件名**追加写:**将想要写的内容追加到对应的文件中去,文件当中之前的内容还存在,新内容在之前内容的后面语法:echo 想要写入的内容 >> 文
2021-12-29 16:31:59 636
原创 Linux 系统-----目录(文件夹)相关的操作命令
目录(文件夹)相关的操作1》mkdir (make directories)创建目录语法:mkdir -p 目录名称-p:当父母录不存在的情况下,同时创建父目录2》rmdir (remove empty directories)删除目录语法:rmdir 目录名称3》cd (change directory)切换目录语法:cd 要切换的目录名称特殊符号:.. 表示上一级 cd .. :表示切换到上一级目录4》pwd (print working directory)打印当前所处的位
2021-12-29 16:26:13 373
原创 Linux操作系统介绍及安装
操作系统功能负责调度各种计算机硬件,并且为应用软件提供接口,起到了承上启下的作用一、Linux发展史二、安装linux操作系统1》通过vmware虚拟一套只有硬件的电脑:cpu、硬盘、内存条、鼠标、键盘……2》在vmware虚拟出来的电脑里面装linux操作系统安装操作系统的方法?1、光盘2、U盘、移动硬盘3、网络安装iso后缀的文件就叫做镜像文件文件,镜像文件一般都是操作系统的软件安装包镜像文件从哪获得?去官网下载配置安装位置配置网络和主机名
2021-12-28 10:33:33 568
原创 Python + selenium 自动化测试实例(一)
把CSDN登录功能实现自动化一、搭建自动化测试框架Python + selenium 自动化测试框架二、准备测试数据Python + selenium 自动化测试----读取CSV文档中的测试数据三. 先准备page层把界面元素定义成属性:可以直接写到class中; 就类似于变量属性名 = 属性值 #属性名自定义; 属性值:是界面元素的定位信息把定位元素并且操作定义成方法Class xxxpage:属性名 = 属性值 #属性名自定义; 属性值:是界面元素的定位信息d
2021-12-21 15:19:24 3712
原创 Python + selenium 自动化测试----读取CSV文档中的测试数据
一、搭建自动化测试框架自动化测试框架二、读取测试数据文件(common)1.先配置测试数据文件,确定好测试数据文件的格式:推荐的: 一个输入对应一列, 一行对应一个测试用例的数据。例如:登录的测试数据Username,passwd #(表头,列的解释)一般都是放在第一行,也可以放在最后一行aaaa,123456bbbb,123456cccc,123456备注:1、一旦测试数据文件的格式定好,必须要统一,每个功能的测试数据要符合统一格式2、测试数据文件的类型建议是csv。 当然也可
2021-12-16 15:39:52 4960 4
原创 Python + selenium 自动化测试思路
自动化测试思路一、首先明确为什么要设计项目自动化测试框架?可以进行分类有序的来管理项目自动化的代码和文档等希望可以做到一旦自动化测试代码写完调试通之后,就不要再修改代码了。 因为一旦修改,就得担心代码出问题,又得重新调试等等,很麻烦。**建议:**尽量把会变的东西写到代码外面。 例如: 测试数据 ;配置信息 等等可以做到尽量提高代码的复用率,减少代码的重复性。例如:有十几行代码;要经常用。----进行封装; 封装到方法中;哪里需要哪里调。二、针对项目功能来实现自动化的过程思路1.会先实
2021-12-16 15:08:54 2028
原创 Python + selenium 自动化测试框架
自动化测试框架项目自动化测试框架设计为4层1.基础层(通用层)基础层:将通用,重复性比较高的代码封装到这里。 写通用的代码的。其他3层想要的话,就可以直接调用。例如:读取测试数据的代码,读取配置信息的代码;截图的代码的,定位元素的代码等等2.功能层(页面层)功能层:pages 封装页面的。 把页面封装成类。类中包含:属性和方法把页面上的界面元素定义成类的属性;把定位界面元素并且进行操作封装到类的方法中;3.业务层业务层:把页面和测试数据等等整合到一起,形成一个完整的业务功能。
2021-12-14 16:18:23 11235 7
原创 Python + selenium 元素定位(六)----Xpath的高级用法
Xpath的高级用法Xpath:即为xml路径语言(XML path language)。Xml不是用来取代HTML,而是对HTML的补充,用来与HTML协同工作的。 Xml是元标记 语言。元标记:表示可以从标记中就可以看出描述的内容本身什么。Xpath使用路径表达式来选取XML文件中的节点或者节点集。路径:绝对路径 和 相对路径xpath定位元素的原理遍历的原理。1、绝对路径定位元素使用绝对路径来定位元素 定位到第一个输入框并输入内容driver.find_elemen
2021-12-10 17:13:30 4488 3
原创 Python + selenium 元素定位(五)-----css selector 的高级用法
css selector 的高级用法CSS(Casading Style Sheets)层叠样式表。一种用来表现HTML或者XML等文件样式的语言。css选择器是浏览器用来选择元素,selenium 也要选择元素,可以使用css选择器来选择Web元素。定位元素的注意事项:1、找到等待定位的元素的唯一属性2、如果该元素没有唯一属性,则先找到能够给被唯一定位的父元素/子元素/相邻元素,再使用 “>” 、“ ”、“+” 等辅助定位要定位的元素。3、不要使用随机唯一属性,属性是会发生改变。
2021-12-10 09:06:07 12683 5
原创 Python + selenium 元素定位(四),By方法查找元素----driver.find_elementS(By.XXX, “selector”)
By方法查找元素from selenium.webdriver.common.by import Bydriver.find_elementS(By.XXX, “selector”)返回的是一个列表,如果匹配不到会怎么样?如果匹配不到,则返回一个空列表。1、id 通过元素的id属性来定位元素id 通过 id属性来定位元素eles = driver.find_elements(By.ID, 'IamID') # 返回一个列表print (type(eles))print (el
2021-12-08 19:03:10 6622 2
原创 Python + selenium 元素定位(三),By方法查找元素----driver.find_element(By.XXX, “selector”)
By方法查找元素from selenium.webdriver.common.by import By2类8种driver.find_element(By.XXX, “selector”)如果匹配到多个,则返回匹配到的第一个。如果匹配不到,则抛出NoSuchElementException异常(报错)。1、id 通过元素的id属性来定位元素id 通过元素中的id属性来定位元素ele = driver.find_element(By.ID, "IamID") # 类型为 Web
2021-12-08 18:54:52 6234
原创 Python + selenium 元素定位(二) ----driver.find_elements_by_xxx()
**driver.find_elements_by_xxx()**返回的是一个列表。列表中包含所有匹配到的满足条件的元素。如果匹配不到,则返回一个空列表。1、ID 通过元素的id属性来定位元素id 通过元素的id属性来定位eles = driver.find_elements_by_id("IamID") # 类型是 listprint (eles)print (type(eles))print (len(eles))通过索引来获取到第二个元素print (f"类型为:{t
2021-12-07 19:40:07 4205 2
原创 Python + selenium 元素定位 (一)----driver.find_element_by_xxx()
元素定位打开开发者工具:F12 或者是点击鼠标右键选择 检查 按钮。总共2类8种方法driver.find_element_by_xxx() 如果匹配到多个,则返回匹配到的第一个。如果匹配不到,则抛出NoSuchElementException异常(报错)。1、ID 通过元素的id属性来定位元素id 通过元素的ID属性来定位元素driver.find_element_by_id("IamID").send_keys("通过元素的ID属性来定位元素")2、name 通过元素的name属
2021-12-07 09:21:50 21641 4
原创 MySQL 数据库创建表约束
约束约束是用来限制表中的数据长什么样子的。即什么样的数据可以插入到表中,什么样的数据插入不到表中符合约束要求的数据就可以插入到表中,不符合约束要求的数据就插入不到表中。1》唯一约束设置了唯一约束的列值不能有重复值使用unique 关键字指定唯一约束例如:创建收货地址表,给收货人电话这一列加唯一约束建表语句:CREATE TABLE address ( add_name VARCHAR (30), add_phone CHAR(11) UNIQUE, add_address VARCHAR
2021-12-02 19:06:13 2910
原创 mysql 之 数据定义语言DDL (create、alter、drop)
DDL(数据定义语言)主要用来创建表,修改表,删除表主要包含三个语句:1、create:创建语句,例如:创建表2、alter:修改表3、drop:删除表1》创建表步骤:1、这个表是用来存储什么数据的2、确定这个表包含哪些列 命名3、套用create语句语法:create table 表名( 列名1 数据类型, 列名2 数据类型, ..... );例如:创建淘宝网站的账户表CREATE TABLE user_taobao ( id INT, username VARCHA
2021-12-02 16:20:20 1973
原创 mysql 查询某一时间段的数据信息
查询几个小时内的数据DATE_SUB(NOW(), INTERVAL 5 HOUR)查询当日的数据信息select * from 表名 where to_days(时间字段名) = to_days(now());查询前一天的数据信息SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1查询7天的数据信息SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY)
2021-11-30 15:17:56 1349 1
原创 delete、truncate、drop三者的区别
delete、truncate、drop三个区别**drop删除表delete和truncate都是清空表数据delete删除数据时一行一行的删除,可以做到只删除某些行,比较慢truncate删除数据时先删除表,再创建出一个同名的新表,比较快,但是做不到只删除某些行:truncate table 表名;**...
2021-11-30 10:14:52 186 1
原创 mysql 之 数据操纵语言DML(insert、update 、delete)
DML(数据操纵语言)主要包含三个语句插入:insert 将数据插入到表中,以行为单位插入,例如:淘宝上注册一个账户,或者新增加一个收货地址更新:update 修改收货地址的手机号,修改账户密码删除:delete 删除收货地址,注销账号1》insert步骤:1、这个数据要插入到哪个表中,即:明确表(了解表中的列)2、要往哪列放入数据,即:明确列3、要放入的数据分别是什么语法:insert into 表名(列名1,列名2……) values(值1,值2……);例如:插入一个学
2021-11-30 10:10:24 733 2
原创 mysql中常见的函数
mysql中常见的函数1》聚合函数min、max、avg、count、sum2》字符串函数lower(参数) ------变成小写upper(参数) ------变成大写length(参数) ------取长度substr(参数1、参数2、参数3) -----取子字符串参数1:原字符串参数2:从第几位开始取参数3:取几位Trim(参数) ------去掉字符串首尾空格Ltrim(参数) -------去掉字符串开头的空格Rtrim(参数)
2021-11-24 16:46:35 451 1
原创 mysql 之分组查询----(group by)
分组查询关键字:group by 后面根列名,通常和聚合函数一起使用聚合函数:max(列名) --------统计该列的最大值min(列名) --------统计该列的最大值avg(列名) --------统计该列的平均值sum(列名) --------统计该列的和count(列名) ------统计该列的行数,如果该列的值是null,不统计在内count(*) ------统计所有的列,相当于统计行数,不会忽略null例题:查询每门课的最高分分两步:1、按
2021-11-24 16:37:44 848 1
原创 mysql 之 数据查询语言DQL(多表查询)---select
mysql 多表查询多表联合查询是指从多个表中查询出自己想要的数据,但是一般都需要添加连接条件,连接条件一般就是表与表之间的关系连接查询1》交叉连接语法:select * from 表1,表2;返回笛卡尔积,没有实际意义,一般都会加上where条件使用语法:select * from 表1,表2 where 表1.公共列=表2.公共列;返回两个表交集的数据,表1或表2单独有的数据就不返回例如:查询计算机系的学生信息SELECT * FROM student s,department d W
2021-11-22 17:12:14 645 2
原创 mysql 之 数据查询语言DQL(单表查询)---select
DQL(data query language) 数据查询语言数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>sql的书写规范1、sql语句以分号结尾2、sql不区分大小写3、单词和单词之间用空格隔开4、无论是空格还是分号还是引号都必须是英文状态下5、如果值是字符串必须要用引号引起来,如果是数字就不要用引号引起来1》查询表中的所有字段有两种
2021-11-22 16:59:06 832 1
原创 mysql 数据库介绍与安装教程以及使用sqlyog工具连接mysql软件
mysql 数据库介绍mysql发展史96年前后发布了mysql1.02000年,mysql公布了自己的源代码,进入开源的世界2008年,mysql软件又被sun公司收购 10亿美元2009年,oracle以74亿美元收购了sun公司mariadb 是mysql的一个分支,免费的关系型数据库关系型数据库就是基于关系模型的数据库,它使用的存储结构是多个二维表格在二维表格中,每一行称之为一条记录,用来描述一个对象的信息每一列称之为一个字段,用来描述一个对象的属性表与表之间存在相应的关联
2021-11-18 15:37:05 1204 2
原创 用python的selenium写爬虫通过绝对坐标点击元素
用python的selenium写爬虫通过绝对坐标点击,坐标的获取方法注:适用于谷歌浏览器浏览器;其中css选择器为目标区域的css表达式;网页F12打开源代码,在console窗口输入#Left计算X坐标document.querySelectorAll('css选择器')[0].getBoundingClientRect().left + document.documentElement.scrollLeft#Top计算Y坐标document.querySelectorAll('
2021-11-18 14:50:01 2754
原创 Python 中使用 get_screenshot_as_file 获取截图
Python 中使用 get_screenshot_as_file 获取截图import os def get_picture(self,browser,name): # 获取时间戳用来命名截图 sys_time = time.strftime("%Y%m%d%H%M%S") #截图名称:时间+截图名字描述+后缀 png_name = sys_time + name + ".png" #获取当前位置 di
2021-11-16 09:24:32 3342 2
原创 Python中使用BeautifulReport形成测试报告教程
Python中使用BeautifulReport形成测试报告教程pyton中使用BeautifulReport形成测试报告需要先安装BeautifulReport模块打开cmd窗口输入 pip install BeautifulReport下载完成之后在Python中导包验证是否完成from BeautifulReport import BeautifulReport在Python中实现BeautifulReport报告主要分三步1、 组装测试套件: 把要执行的测试用例放入到测试套件中2、
2021-11-16 09:11:14 2612 1
原创 Python中报 AttributeError: module ‘threading‘ has no attribute ‘RLock‘ 解决方法
属性错误:模块“线程化”没有属性“RLock”什么意思呢,就是说你新建的 .py 文件与python自带的脚本名字重复了。标识符的规则:有字母、数字、下划线组成并且不能以数字开头3a=9 错误的函数名和变量名都属于标识符,比姑且不能是关键字。python里的关键字:是python自定义的,不允许开发者定义。python中有33个关键字False def if raiseNone
2021-11-15 09:55:59 1911 2
原创 抓取日志的小工具(命令)Adb logcat
Adb logcat抓取日志的小工具(命令)adb logcat 抓取手机上的日志信息 ;直接显示在命令窗口Adb logcat -v time 抓取手机上的日志信息,但是会多出时间Adb logcat *:E 抓取手机上的错误日志信息Adb logcat -v time *:E 抓取手机上的错误日志信息,会有时间显示Adb logcat > xxx.logAdb logcat -v time *:E > xxxx.logAdb
2021-11-11 10:16:02 4389
原创 app的性能测试小工具monkey使用教程
Monkeyapp的性能测试小工具monkey使用教程功能: 是一个稳定性测试(疲劳测试)小工具; 也可以是随机测试小工具Monkey工具使用过程:A)使用adb shell命令进入到安卓手机中;B)使用monkey命令来进行测试即可;Monkey -p 被测app的包名 --throttle 数字 -v 数字包名,测的是哪个app 操作间的间隔 单位ms 日志 次数-v-v -v-v -v -vmonkey -p
2021-11-11 10:13:55 774
原创 app的性能测试小工具Emmagee使用教程
Emmagee使用教程Emmagee: app的性能测试小工具;用来收集app消耗手机资源的情况。 App客户端的性能小工具; 测试客户端性能; 不是测试服务器性能Emmagee使用过程:Emmagee下载地址:http://www.downcc.com/soft/86297.htmlA)在被测手机上安装emmagee工具; (例如:adb install)B)在手机上打开启动emmagee, 选择被测app, 点击emmagee工具上的开始测试;C)Emma
2021-11-11 10:06:26 1879
原创 Python 使用第三方库 pymysql 连接数据库教程
python连接数据库pyton连接数据库需要先安装pymysql模块打开cmd窗口输入 pip install pymysql安装完成后导入pymysql模块:import pymysqlpython连接数据库主要分五个步骤:step1:连接数据库step2:获取数据库的游标step3:在游标中来执行sql语句step4:关闭游标step5:关闭连接————————————————A)连接mysql数据库; 连接数据库,并且把连接到的数据库对象,赋值给变量conn (表示连
2021-11-10 15:49:57 2027 1
原创 tcp/ip,三次握手四次挥手
tcp/ip,三次握手四次死挥手从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。一、 计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重
2021-11-09 17:36:46 816
原创 Python 键盘事件
键盘事件废话不多说直接上包from selenium.webdriver.common.keys import Keys1、删除键 BACKSPACEdriver.find_element_by_xpath( element ).send_Keys(Keys.BACK_SPACE)2、回车键 ENTER driver.find_element_by_xpath( element ).send_keys(Keys.ENTER)3、全选操作 CTRL + ad
2021-11-09 16:43:44 983 1
原创 iframe/frame/frameset 框架的切换
iframe/frame/frameset 框架的切换iframe/frame/framesetframeset 标签与frame结合使用才能编写框架frameset与普通标签的定位没有区别。不需要进行框架的切换。frame与iframe 对selenium对位而言是一样的,需要进行框架的切换。driver.switch_to.frame(frame_reference)frame_reference 可以是 id、index、 name、 WebElement1、通过 WebEleme
2021-11-09 16:35:09 1094
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人