python登录验证码生成及自动化测试规避
在用django写论坛的时候,需要有登录及注册功能。
故就登录界面后端需要生成随机验证码并传值给前端的代码进行编写如下。
验证码生成png需要调用到python的图形库
生成注册码img
import string
import sys
import random
from PIL import Image,ImageDraw,ImageFont '''生成随机验证码''' def Capture(size=4, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size)) '''验证码生成图片'''
def Capture_img():
# 定义使用Image类实例化一个长为120px,宽为30px,基于RGB的(255,255,255)颜色的图片
img1 = Image.new(mode="RGB", size=(120, 30), color=(255, 255, 255))
# 实例化一支画笔
draw1 = ImageDraw.Draw(img1, mode="RGB")
# 定义要使用的字体
font1 = ImageFont.truetype('arial.ttf', 36)
color1 = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
draw1.text([24,0], Capture(), color1, font=font1)
# 把生成的图片保存为"capture2.png"格式
pngPath=sys.path[1]+"\\static\capture2.png"
print(pngPath)
with open(pngPath, "wb") as f:
img1.save(f, format="png")
效果如:

自动化测试
由于验证码是随机生成的且存储在session内,所以如果测试要进行自动化测试,方案:
1.注释验证码的验证,当需要测试验证码功能时,请独立验证
2.修改源码,将生成的验证码存储备份到其他可获取的地方
3.调用pyhton的验证码识别类: Pillow(python图像处理库)、OpenCV(高级图像处理库)、pytesseract(识别库)
第三点仅适用本方式实现的验证码,如果前端是使用滑动等图形效果的,暂时不适用
且第三点从成本方案上说,不如1/2点快捷。
生成注册码img
python登录验证码生成及自动化测试规避的更多相关文章
- python,验证码生成
<pre>import string import random from PIL import Image from PIL import ImageDraw from PIL impo ...
- PYTHON 随机验证码生成
# 生成一个六位随机验证码 import random # random 生成随机数 temp = '' for i in range(6): num = random.randrange(0,6) ...
- JavaWeb中登录验证码生成
1.页面代码 <html> <head> <title>Title</title> <script type="text/javascr ...
- selemiun 自动化测试登录验证码处理
selemiun 自动化测试登录验证码处理 一.软件及插件的安装 1.火狐浏览器版本(55.0(x64 zh-CN):https://www.cnblogs.com/sandysun/p/783811 ...
- python爬虫模拟登录验证码解决方案
[前言]几天研究验证码解决方案有三种吧.第一.手工输入,即保存图片后然后我们手工输入:第二.使用cookie,必须输入密码一次,获取cookie:第三.图像处理+深度学习方案,研究生也做相关课题,就用 ...
- Python - WebDriver 识别登录验证码
Python - WebDriver 识别登录验证码 没什么可说的直接上代码! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Author:YangYangJ ...
- Python教程:随机验证码生成和join 字符串
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...
- 15.Python实现识别登录验证码(入门)
1.若想识别登录验证码,需要安装:Tesseract-OCR,其下载地址为:http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tess ...
- Python 常用模块系列学习(1)--random模块常用function总结--简单应用--验证码生成
random模块--random是一个生成器 首先: import random #导入模块 print (help(random)) #打印random模块帮助信息 常用function ...
随机推荐
- HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)
Portal Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 允许跨域资源共享(CORS)携带 Cookie (转载)
如何让CORS携带Cookie CORS 是一个 W3C 标准,全称是“跨域资源共享”(Cross-origin resource sharing).默认浏览器为了安全,遵循“同源策略”,不允许 Aj ...
- javascript 获取排列后的对象建值
function getSortedParameter (parameterObject){ let attributes = []; parameterObject = parameterObjec ...
- selenium java maven 自动化测试(一) helloworld
本教程使用selenium-java,简单的完成了网页访问 网页内容获取,表单填写以及按钮点击. 1. 使用maven构建项目 在pom中添加如下依赖: <dependency> < ...
- ios宏定义字符串
ios宏定义字符串 #define objcString(str) @""#str"" 使用效果: objcString(字符串)
- webpack+vuecli使用问题总结
1,按照官网安装步骤install $ npm install -g vue-cli $ vue init webpack my-project $ cd my-project $ npm insta ...
- activemq的高级特性:通配符式分层订阅
activemq的高级特性之通配符式分层订阅 队列的名称可以分层:aa.bb.cc.dd 可以匹配:aa.bb.cc.dd,aa.*.cc.dd,aa.> *:匹配当前层的内容 >:任何一 ...
- MySQL 日常运维业务账号权限的控制
在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要. 业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码.以及统一的读权限,写 ...
- Ubuntu修改桌面为Desktop
想用中文系统,却不想用中文文件夹,可以用以下方法: 先把home路径下的桌面文件夹修改为Desktop 然后在命令行输入 nano ~/.config/user-dirs.dirs 修改后ctrl - ...
- WebGl 利用缓冲区对象画多个点
效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...