至此环境全部准备完毕,loginWeb_test代码如下:

import unittest,time,pytesseract

from common import getURLParams

from selenium import webdriver

from PIL import Image,ImageEnhance

class LoginWebTest(unittest.TestCase):

def setUp(self):

self.web_url = getURLParams.web_url

self.driver = webdriver.Chrome()

def tearDown(self):

print("end")

def readVeriCode(self,driver):

# 截图或验证码图片保存地址

screenImg = "F:\工作\screenImg.png"

# 浏览器页面截屏

driver.get_screenshot_as_file(screenImg)

# 定位验证码位置及大小

location = driver.find_element_by_id('verify_code').location

size = driver.find_element_by_id('verify_code').size

left = location['x']

top = location['y']

right = location['x'] + size['width']

bottom = location['y'] + size['height']

# 从文件读取截图,截取验证码位置再次保存

img = Image.open(screenImg).crop((left, top, right, bottom))

img = img.convert('L')  # 转换模式:L | RGB

img = ImageEnhance.Contrast(img)  # 增强对比度

img = img.enhance(2.0)  # 增加饱和度

img.save(screenImg)

# 再次读取识别验证码

img = Image.open(screenImg)

code = pytesseract.image_to_string(img)

# code= pytesser.image_file_to_string(screenImg)

print(code.strip())

return code.strip()

def test_login(self):

driver=self.driver

driver.get(self.web_url)

driver.find_element_by_id("loginName").send_keys("admin")

driver.find_element_by_id("passWord").send_keys("xxxx")

code=self.readVeriCode(driver)

driver.find_element_by_id("number").send_keys(code)

driver.find_element_by_id("loginBtn").click()

time.sleep(5)

info=driver.find_element_by_class_name("text-success").text

print("info:",info)

self.assertEqual(info,"欢迎使用xxxxxx系统","登录失败")