一、多浏览器跑case-21

1、D:\imooc\selenium\register_function.py

# 功能:在register_code.py的基础上,进行二次改造。

# 编码格式
#coding=utf-8

# 添加当前项目路径
import sys
sys.path.append('D:/imooc/selenium')

# 浏览器驱动包
from selenium import webdriver

# 时间包
import time

# 引入随机数生成包
import random

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

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

# 导入FindElement
from find_element import FindElement

class RegisterFunction(object):

    # 将get_driver()中的driver,放入__init__构造函数中。
    def __init__(self,url,i):
        # get_driver的时候,需要将url放进去。
        self.driver = self.get_driver(url,i)

    # 获取driver并打开url
    def get_driver(self,url,i):
        # Chrome浏览器的驱动
        # driver的实例化
        if i == 0:
            driver = webdriver.Chrome()
        elif i == 1:
            driver = webdriver.Edge()
        else:
            driver = webdriver.Firefox()
        # 加载指定url界面
        driver.get(url)
        # 最大化窗口
        driver.maximize_window()
        # 返回driver
        return driver
    
    # 输入用户信息
    def send_user_info(self,key,data):
        self.get_user_element(key).send_keys(data)

    # 定位元素位置,获取element元素值
    def get_user_element(self,key):
        # 调用findelement.py
        find_element = FindElement(self.driver)
        user_element = find_element.get_element(key)
        return user_element

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

    # 获取图片
    def get_code_image(self,file_name):
        # 保存整个页面的图片
        # 增加self
        self.driver.save_screenshot(file_name)
        # 通过获取验证码的id,计算code_element的元素,通过get_user_element
        code_element = self.get_user_element("code_image")
        # 通过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(self,file_name):
        self.get_code_image(file_name)
        # 这里的api不变
        # 需要缴费
        # 修改my_appId = 1182042
        # 修改my_appSecret = 523bfa72c8f64177b7a17f7a2f02c462
        # https://www.showapi.com/apiGateway/view/184?tab=1
        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']['Result']
        # 返回验证码
        return text

    # 设置value值
    def main(self):
        user_name = self.get_range_user()
        user_email = user_name + "@163.com"
        file_name = "D:/imooc/test01.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('user_password',"111111")
        # self.send_user_info('code_text',code_text)
        self.send_user_info('code_text',"11111")
        self.get_user_element('register_button').click()
        # 检测整个流程是否成功
        code_error = self.get_user_element("code_text_error")
        if code_error == None:
            print("success")
        else:
            self.driver.save_screenshot("D:\imooc\code_error.png")
        time.sleep(5)
        self.driver.close()

if __name__ == '__main__':
    for i in range(3):
        register_funtion = RegisterFunction('http://www.5itest.cn/register',i)
        register_funtion.main()

 

posted @ 2022-10-18 11:07  酱汁怪兽  阅读(23)  评论(0编辑  收藏  举报