zoukankan      html  css  js  c++  java
  • Python+Selenium3自动化测试(四)——注册流程梳理及代码封装

    #encoding=utf-8
    from selenium import webdriver
    from PIL import Image
    from ShowapiRequest import ShowapiRequest
    import time
    import random

    driver=webdriver.Chrome()

    #浏览器初始化
    def driver_init():
    driver.get("http://www.5itest.cn/register")
    driver.maximize_window()
    time.sleep(5)

    # 获取元素
    def get_element(id):
    return driver.find_element_by_id(id)

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

    # 获取图片
    def get_code_image(file_name):
    driver.save_screenshot(file_name)
    code_element=driver.find_element_by_id("captcha_code")
    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(file_name):
    r = ShowapiRequest("http://route.showapi.com/932-2", "106571",
    "3606ba9b88794da7a78bf35d4545f54a") # appid,appsecret需个人中心申请修改
    r.addBodyPara("typeId", "35")
    r.addBodyPara("convert_to_jpg", "0")
    r.addFilePara("image", file_name) # 文件上传时设置
    res = r.post()
    print(res.text)
    text=res.json()['showapi_res_body']['image']
    return text

    # 运行主程序
    def run_main():
    user_name_info=get_range_user()
    user_eamil=user_name_info+"@163.com"
    file_name="E:/Program/Test/01.png"
    # 浏览器初始化
    driver_init()
    # 获取元素
    get_element("register_email").send_keys(user_eamil)
    get_element("register_nickname").send_keys(user_name_info)
    get_element("register_password").send_keys(111111)
    get_code_image(file_name)
    text=code_online(file_name)
    driver.find_element_by_id("captcha_code").send_keys(text)
    driver.find_element_by_id("register-btn").click()
    driver.close()

    run_main()
  • 相关阅读:
    EXTJS4.2——0.简介
    什么是JDBC?
    Applet和普通的Java应用程序有什么区别?
    final关键字、finally代码块和finalize()方法有什么区别?
    throw和throws有什么区别
    Java中的两种异常类型是什么?他们有什么区别?
    Java堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?
    flash插件
    算法复杂度分析中的符号(大Θ符号、大Ο符号...)
    Enumeration接口和Iterator接口的区别有哪些?
  • 原文地址:https://www.cnblogs.com/woaixihongshi/p/11652017.html
Copyright © 2011-2022 走看看