博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 自动化之验证码识别
阅读量:5010 次
发布时间:2019-06-12

本文共 2691 字,大约阅读时间需要 8 分钟。

之前公司的验证码比较简单,可以采取直接破解的方式进行登录

部分代码如下:

# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectimport unittest,time,re,sysfrom PIL import Imageimport pytesseractreload(sys)sys.setdefaultencoding('utf-8')class Ypt(unittest.TestCase):    def setUp(self):        self.driver = webdriver.Chrome()        self.driver.implicitly_wait(30)        self.base_url = "http://*********.com"        self.verificationErrors = []        self.accept_next_alert = True    def get_streen(self):        driver = self.driver        driver.save_screenshot('D://aa.png')  #截取当前网页,该网页有我们需要的验证码        imgelement = driver.find_element_by_xpath('//*[@id="id_checkCode"]')  #定位验证码        location = imgelement.location  #获取验证码x,y轴坐标        size=imgelement.size  #获取验证码的长宽        rangle=(int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height'])) #写成我们需要截取的位置坐标        i=Image.open("D://aa.png") #打开截图        frame4=i.crop(rangle)  #使用Image的crop函数,从截图中再次截取我们需要的区域        frame4.save('D://frame4.png')        img = Image.open('D://frame4.png')        print img.load()        aa =  .image_to_string(img)        print u"识别的验证码为:"        print aa        if aa == "":               #如果识别为空,则再一次识别            driver.find_element_by_xpath('//*[@id="id_checkCode"]').click()            self.get_streen()        return aa    def test_ypt(self):        now_time = open("yuheng.txt","a")        driver = self.driver        driver.maximize_window()        driver.get(self.base_url + "/userLoginOut.screen")        driver.find_element_by_id("j_username").clear()        driver.find_element_by_id("j_username").send_keys("username")        driver.find_element_by_id("j_password").clear()        driver.find_element_by_id("j_password").send_keys("password")        driver.find_element_by_id("id_imgCode").clear()        driver.find_element_by_id("id_imgCode").send_keys(self.get_streen())        driver.find_element_by_id("btn-login").click()        driver.find_element_by_id("C5A000005").click()        driver.find_element_by_link_text(u"概况数据").click()        self.assertEqual(u"**************", driver.title)        time.sleep(8)def is_element_present(self, how, what):        try: self.driver.find_element(by=how, value=what)        except NoSuchElementException, e: return False        return True        def is_alert_present(self):        try: self.driver.switch_to_alert()        except NoAlertPresentException, e: return False        return Trueif __name__ == "__main__":    unittest.main()

 

转载于:https://www.cnblogs.com/tester-hehehe/p/5542167.html

你可能感兴趣的文章
Java compiler level does not match the version of the installed Java project facet.解决方法
查看>>
笔记_小结
查看>>
Linux lsof命令 umount U盘
查看>>
自定义Font
查看>>
linux svn 服务端搭建
查看>>
maven用途、核心概念、用法、常用参数和命令、扩展
查看>>
linux时间同步ntp服务的安装与配置
查看>>
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法...
查看>>
网络编程-socket并发-粘包问题
查看>>
python 中安装pandas
查看>>
Hibernate 的<generator class="native"></generator>的不同属性含义
查看>>
linux修改root账户的用户名所得的教训
查看>>
【LeetCode】Flatten Binary Tree to Linked List
查看>>
读后感-浮生六纪
查看>>
执行指定路径的程序文件
查看>>
Leetcode-950 Reveal Cards In Increasing Order(按递增顺序显示卡牌)
查看>>
[Linux] 在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
查看>>
14款下载有用脚本的超酷网站
查看>>
LXC-Linux Containers介绍
查看>>
7.31实习培训日志-docker sql
查看>>