import win32gui
from ctypes import *import ctypes
from PIL import ImageGrabimport win32api,win32con
import pyHookimport pythoncom
from selenium import webdriverimport os
import time#此处登录网站并且输入用户名密码
browser = webdriver.Chrome()browser.get("此处输入你的网址")
browser.find_element_by_id("username").send_keys("用户名")browser.find_element_by_id("password").send_keys("密码")
#对验证码部分进行截图while (1):
class RECT(ctypes.Structure):_fields_ = [('left', ctypes.c_int),
('top', ctypes.c_int),('right', ctypes.c_int),
('bottom', ctypes.c_int)]rect = RECT()
HWND = win32gui.GetForegroundWindow()ctypes.windll.user32.GetWindowRect(HWND, ctypes.byref(rect))
# 下面这行是只截取验证码这个区域
coordinate = (rect.left+432, rect.top+463, rect.right-420, rect.bottom-525)pic = ImageGrab.grab(coordinate)
pic.save("D:\\verificationcode.jpg")#使用OCR技术进行识别
command = "tesseract verificationcode.jpg d:\\verresult"os.system(command)
f = open("d:\\verresult.txt",'r')line = f.read(4)
#print linef.close()
g=line.isalnum()#print g
#枚举识别,如果识别失败则重新截图识别,直到进入系统。if g:
browser.find_element_by_id("authcode").send_keys(line)browser.find_element_by_xpath("//button[@type='submit']").click()
#print "click submit ok"time.sleep(2)
# 获取系统的title,比如成功登录进去以后的title是“系统首页”
if u"系统首页" == browser.title :print "login success"
breakelse:
#下面就是验证码错误以后的处理,比如点掉提示验证码错误的框等等。
#print "login faild"time.sleep(2)
browser.find_element_by_id("okBtn").click()#print "click okbtn ok"
time.sleep(2)browser.find_element_by_id("authCodeImg").click()
#print "click codeimg ok"else:
browser.find_element_by_id("authCodeImg").click()