一、多浏览器跑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()