admin管理员组文章数量:1636902
1、安装PIL
window键+r打开cmd,在cmd输入:pip install PIL
错误提示:
Could not find a version that satisfies the requirement PIL (from versions: )
No matching distribution found for PIL
解决方案:
找一个非官方的64位大家通用的PIL安装
http://www.lfd.uci.edu/~gohlke/pythonlibs/
Ctrl+F,搜PIL,根据自己的python版本下载(我是python3.6,64位,但是我64位的cp36用不了,所以就试着安装了32位的cp36,然后就可以了,同情况的朋友可以试一下)
先安装wheel。选择相应版本下载后,打开cmd(win+r),你要先安装pip,具体pip安装百度一下怎么安装,然后pip install wheel,然后直接打开PyCharm就可以直接使用了。
2、安装tesseract-ocr
github地址: https://github/tesseract-ocr/tesseract
windows:
The latest installer can be downloaded here: tesseract-ocr-setup-3.05.01.exe and tesseract-ocr-setup-4.00.00dev.exe (experimental).
pip install pytesseract
遇到问题及解决:
FileNotFoundError: [WinError 2] 系统找不到指定的文件
解决方案:
1[推荐]: 将tesseract.exe添加到环境变量PATH中,
例如: D:\Tesseract-OCR,默认路径为C:\Program Files (x86)\Tesseract-OCR
注意: 为了使环境变量生效,需要关闭cmd窗口或是关闭pycharm等ide重新启动
方法2: 修改pytesseract.py文件,指定tesseract.exe安装路径
# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe‘
3、用Pycharm自动化测试,验证码登陆,代码如下:
# -*- coding: utf-8 -*-
# -*- author: hjd -*-
#coding:utf-8
from selenium import webdriver
from time import sleep
import unittest
from PIL import Image
from PIL import ImageEnhance
import pytesseract
from selenium.webdrivermon.keys import Keys
#测试Image类
# im=Image.open('D:\\Pictures\\Camera Roll\\xuanku_chahua.jpg')
# w,h = im.size
# print(w,h)
#打开登陆界面
driver = webdriver.Firefox()
url = "需要登陆的网址"
driver.get(url)
driver.maximize_window()
#点击显示验证码
sleep(2)
driver.switch_to.default_content()
driver.find_element_by_css_selector("input#captcha").clear()
#截取当前网页中我们需要的验证码
sleep(2)
driver.save_screenshot(r"E:\aa.png")
img = driver.find_element_by_id("codeimage") #定位验证码
location = img.location #获取验证码x,y轴坐标
size = img.size #获取验证码的长宽
coderange = (int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height']))
#写成我们需要截取的位置坐标
i = Image.open(r"E:\aa.png")#打开截图
frame4 = i.crop(coderange)#使用Image的crop函数,从截图中再次截取我们需要的区域
frame4.save(r"E:\frame4.png")
i2=Image.open(r"E:\frame4.png")
imgry = i2.convert('L') #图像加强,二值化,PIL中有九种不同模式。分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。L为灰度图像
sharpness = ImageEnhance.Contrast(imgry)#对比度增强
i3 = sharpness.enhance(3.0) #3.0为图像的饱和度
i3.save("E:\\image_code.png")
i4 = Image.open("E:\\image_code.png")
text = pytesseract.image_to_string(i4) #使用image_to_string识别验证码
print(text)
#admin登陆
sleep(5)
driver.switch_to.default_content()
driver.find_element_by_id('user_name').send_keys('用户名')
driver.find_element_by_id('password').send_keys('密码')
driver.find_element_by_css_selector("input#captcha").send_keys(text)
需要考虑验证码的图片复杂度问题,如果是有干扰线和噪点的验证码图片,这段代码无法实现。
转载于:https://wwwblogs/-hjd/p/9584037.html
本文标签: 验证码测试PILpytesseractpycharm
版权声明:本文标题:安装PIL和pytesseract,用Pycharm自动化测试,验证码登陆 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729230695a1191436.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论