# 编码 # 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