#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:特昂糖
import pytesseract
from PIL import Image
from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.get('*******************')
driver.maximize_window()
driver.implicitly_wait(30)
t.sleep(2)
driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png') #截取验证码并保存到本地
ver=pytesseract.image_to_string(Image.open('1.png')) #识别截图中的字符串
with open('index.txt',"w") as f: #将识别出的字符串写入到文件中
f.write("".join(ver.split())) #因为识别到的文字有空格,所有我这里做了去除空格的处理
with open("index.txt","r") as f: #将写入的字符串读取出来并赋值给a
a=f.read()
driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver) #将读取到的字符串填写到验证码输入框
t.sleep(3)
driver.quit()
那么问题来了,文字识别的准确率不是100%我们应该怎么去判断是否登录成功呢?
比如我在测试代码中做了一个if循环,判断URL是不是还是登录页面的地址,如果是,那就重新识别一下,代码如下:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:特昂糖
import pytesseract
from PIL import Image
from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.get('http://****************')
driver.maximize_window()
driver.implicitly_wait(30)
t.sleep(2)
driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png') #截取验证码并保存到本地
ver=pytesseract.image_to_string(Image.open('1.png')) #识别截图中的字符串
with open('index.txt',"w") as f: #将识别出的字符串写入到文件中
f.write("".join(ver.split())) #因为识别到的文字有空格,所有我这里做了去除空格的处理
with open("index.txt","r") as f: #将写入的字符串读取出来并赋值给a
a=f.read()
driver.find_element_by_xpath('//*[@id="username"]').send_keys("******") #输入用户名
t.sleep(1)
driver.find_element_by_xpath('//*[@id="password"]').send_keys("******") #输入密码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver) #输入验证码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="formLogin"]/div[5]/div/div/span/button') #点击登录
t.sleep(2)
if driver.current_url=='http://**************.com': #如果URL为登录页面的URL
driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png') # 截取验证码并保存到本地
ver = pytesseract.image_to_string(Image.open('1.png')) # 识别截图中的字符串
with open('index.txt', "w") as f: # 将识别出的字符串写入到文件中
f.write("".join(ver.split())) # 因为识别到的文字有空格,所有我这里做了去除空格的处理
with open("index.txt", "r") as f: # 将写入的字符串读取出来并赋值给a
a = f.read()
driver.find_element_by_xpath('//*[@id="username"]').send_keys("******") # 重新输入用户名
t.sleep(1)
driver.find_element_by_xpath('//*[@id="password"]').send_keys("********") # 重新输入密码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver) # 重新输入验证码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="formLogin"]/div[5]/div/div/span/button') # 点击登录
t.sleep(2)
else:
pass
driver.quit()