可以将注册页面的相关操作,封装到类里。通过实例化类进行响应的注册操作:
GitHub代码commits id:e6d7b13
其他代码做了模块上的调整,根据GitHub的提交ID进行对比查看,直接上代码:
#!/bin/usr/env python3
# -*- coding: utf-8 -*-
# --------------------------------
# ProjectName:
# Author: Crisimple
# CreateTime: 2019/6/8 20:13
# FileName: register_function.py
# Description:
# Question:
# --------------------------------
from selenium import webdriver
import time
import random
from PIL import Image
from code_package.sdk.ShowapiRequest import ShowapiRequest
from code_package.base.find_element import FindElement
class RegisterFunction(object):
def __init__(self, url):
self.driver = self.get_driver(url)
# 获取driver并打开url
def get_driver(self, url):
driver = webdriver.Chrome("../tools/chromedriver.exe")
driver.get(url)
driver.maximize_window()
return driver
# 输入用户信息
def send_user_info(self, key, data):
self.get_user_element(key).send_keys(data)
# 定位用户信息,获取 element
def get_user_element(self, key):
find_element = FindElement(self.driver)
user_element = find_element.get_element(key)
return user_element
# 获取随机数
def get_range(self):
number = ''.join(random.sample('123456789abcdefg', 8))
return number
# 获取图片
def get_code_image(self, file_name):
self.driver.save_screenshot(file_name)
code_element = self.get_user_element("code_image")
left = code_element.location['x']
top = code_element.location['y']
right = code_element.size['width'] + left
height = code_element.size['height'] + top
im = Image.open(file_name)
img = im.crop((left, top, right, height))
img.save(file_name)
# 解析图片验证码
def code_online(self, file_name):
self.get_code_image(file_name)
# 解析验证码图片中的文字(用第三方的图片验证码识别接口 ShowApiRequest)
r = ShowapiRequest("http://route.showapi.com/184-4","48120","12c017278c0845c2bcda177212d2d2ac" )
r.addBodyPara("img_base64", "")
r.addBodyPara("typeId", "35")
r.addBodyPara("convert_to_jpg", "0")
r.addBodyPara("needMorePrecise", "0")
r.addFilePara("image", file_name) #文件上传时设置
res = r.post()
text = res.json()["showapi_res_body"]["Result"]
return text
# 主函数
def main(self):
user_name = self.get_range()
user_email = user_name + "@163.com"
file_name = "../image/code_image.png"
code_text = self.code_online(file_name)
self.send_user_info("user_email", user_email)
self.send_user_info("user_name", user_name)
self.send_user_info("password", "Test@123")
self.send_user_info("code_text", code_text)
self.get_user_element("register_button").click()
time.sleep(5)
self.driver.close()
if __name__ == "__main__":
url = "http://www.5itest.cn/register"
register_function = RegisterFunction(url)
register_function.main()