测试一个简单的开源java项目,用户注册,用户登陆,管理员登陆,写文章等
需要搭建环境 JDK 、mysql、服务器tomcat、jpress
建立项目文件格式:
1.所需要的工具文件包:util.py
项目中需要的工具:
1.验证码的识别
2.生成随机字符串
3.logging日志
import os
import random
import string
import time
import ddddocr
import logging.handlers
import datetime
from PIL import Image
def get_cod(driver, id, ele):
"""获取验证码图片上的信息"""
t = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime())
path = os.path.dirname(os.path.dirname(__file__)) + '\\screenshots'
picture_name1 = path + '\\' + t + '验证码图片截屏.png'
# 获取验证码图片,图片储存在screenshots目录里
driver.save_screenshot(picture_name1)
# 获取验证码框,确定左顶点和右底点
ce = driver.find_element(id, ele)
left = ce.rect['x']
top = ce.rect['y']
right = ce.rect['width'] + left
height = ce.rect['height'] + top
# 打开验证码截屏的图片进行抠图
im = Image.open(picture_name1)
img = im.crop((left, top, right, height))
# 将抠出的验证码保存指定图片目录里
t = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime())
picture_name2 = path + '\\' + t + '验证码抠图.png'
img.save(picture_name2)
# 用pytesseract模块识别图片上的信息,转为字符串,这个识别度很低不好用
# image1 = Image.open(picture_name2)
# code = pytesseract.image_to_string(image1)
# return code
# 网上第三方开源识别图片验证码
ocr = ddddocr.DdddOcr()
with open(picture_name2, 'rb') as f:
image = f.read()
code = ocr.classification(image)
return code
def gen_random_str():
"""生成随机字符串"""
rand_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
return rand_str
def get_logger():
"""logging日志"""
import logging.handlers
import datetime
# 获得一个logger 名字叫mylogger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG) # 设置级别
# 放在同目录logs目录里
path = os.path.dirname(os.path.dirname(__file__)) + '/logs'
data = time.strftime('%Y%m%d%H%M', time.localtime())
# 根据时间,将日志消息放在磁盘中
# atTime时间设置成,当前日期凌晨,这个没有测试,atTime参数是这个时间就发送?待...
# when 是按照什么日期切分
# interval 间隔1
# backupCount 日志保留7个
date = datetime.datetime.now()
zero_time = datetime.datetime(date.year, date.month, date.day, 0, 0, 0)
filename=path+'/all_'+data+'.log'
rf_handler = logging.handlers.TimedRotatingFileHandler(
filename=filename, when='midnight', interval=1, backupCount=7,
encoding='utf-8',atTime=zero_time)
# 设置日志格式
rf_handler.setFormatter(logging.Formatter("%(asctime)s