首页 > 其他分享 >一、注册流程梳理及代码封装-14

一、注册流程梳理及代码封装-14

时间:2022-10-09 10:55:24浏览次数:60  
标签:code 封装 14 get driver element file 梳理 name

# 编码
# coding=utf-8

# 浏览器驱动包
from selenium import webdriver

# 时间包
import time

# 引入随机数生成包
import random

# 使用pip库进行图片解析包/取图片的包
from PIL import Image

# 获取api解析图片包
from ShowapiRequest import ShowapiRequest

# Chrome浏览器的驱动
# driver的实例化
driver = webdriver.Chrome()

# 浏览器的初始化
def driver_init():    
    # 加载指定url界面
    driver.get("http://www.5itest.cn/register")
    # 最大化窗口
    driver.maximize_window()
    time.sleep(5)

# 传元素的id
def get_element(id):
    element = driver.find_element_by_id(id)
    return element

# 获取随机数
def get_range_user():
    user_info = ''.join(random.sample('1234567890abcdefghijklmn',8))
    return user_info

# 获取图片
def get_code_image(file_name):
    # 保存整个页面的图片
    driver.save_screenshot(file_name)
    # 通过获取验证码的id,计算code_element的元素
    code_element = driver.find_element_by_id("getcode_num")
    # 通过code_element的元素,计算code_element元素的坐标
    # 获取的格式是:{"x":123,"y":345}
    # print(code_element.location)
    # 左边点的坐标
    left = code_element.location['x']*1.75
    top = code_element.location['y']*1.75
    # 右边点的坐标
    right = code_element.size['width']*1.75+left
    height = code_element.size['height']*1.75+top
    # 打开一张图片,并命名为一个对象
    im = Image.open(file_name)
    # 按照一个坐标进行裁剪
    img = im.crop((left,top,right,height))
    # 保存裁剪后的图片
    img.save(file_name)

# 解析图片,获取验证码
def code_online(file_name):
    # 这里的api不变
    # 需要缴费
    # 修改my_appId = 1182042
    # 修改my_appSecret = 523bfa72c8f64177b7a17f7a2f02c462
    r = ShowapiRequest("http://route.showapi.com/184-1","1182042","523bfa72c8f64177b7a17f7a2f02c462" )
    # 图片存放地址
    r.addFilePara("image", file_name)
    # 代表识别几位数的图片,即多少位数的字。
    r.addBodyPara("typeId", "35")
    # r.addBodyPara("convert_to_jpg", "0")
    res = r.post()
    text = res.json()['showapi_res_error']['err']
    # 返回验证码
    return text

# 运行主程序
def run_main():
    user_name = get_range_user()
    user_email = user_name + "@163.com"
    file_name = "D:/imooc/test01.png"
    # 浏览器的初始化
    driver_init()
    # 加载邮箱地址 
    get_element("register_email").send_keys(user_email)
    # 加载用户名
    get_element("register_nickname").send_keys(user_name)
    # 加载密码
    get_element("register_password").send_keys("111111")
    # 获取图片
    get_code_image(file_name)
    # 解析图片
    text = code_online(file_name)
    get_element("captcha_code").send_keys(text)
    get_element("register-btn").click()
    time.sleep(5)
    driver.close()

run_main()

终端

Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

PS D:\imooc\selenium> python .\register_code.py

 

标签:code,封装,14,get,driver,element,file,梳理,name
From: https://www.cnblogs.com/jieqiong1755/p/16770944.html

相关文章