栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Python3+Selenium3自动化测试框架——②流程梳理及代码封装

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python3+Selenium3自动化测试框架——②流程梳理及代码封装

Python3+Selenium3自动化测试框架——①基本步骤

对之前的步骤进行

一、流程梳理以及功能封装 
# coding=utf-8
import json
import random
import time

import requests
from PIL import Image
from selenium import webdriver

driver = webdriver.Chrome()


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


# 获取element信息
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.execute_script('document.body.style.zoom="0.8"')  # 根据电脑缩放比例缩小窗口比例
    driver.save_screenshot(file_name)
    code_element = driver.find_element_by_id("getcode_num")
    left = code_element.location['x']  # 获取左上角点x值
    top = code_element.location['y']  # 获取左上角点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):
    data = {
        'token': 'free',
        'type': 'local'
    }

    files = {'file': open(file_name, 'rb')}  # binary上传文件
    response = requests.post('http://www.bhshare.cn/imgcode/', files=files, data=data)
    print(response.text)
    result = json.loads(response.text)
    if result['code'] == 200:
        return result['data']
    else:
        return 'error'


# 运行主程序
def run_main():
    user_name_info = get_range_user()
    user_email = user_name_info + "@163.com"
    file_name = "D:/Users/Richard Young/Desktop/imooc.png"
    driver_init()
    get_element("register_email").send_keys(user_email)
    get_element("register_nickname").send_keys(user_name_info)
    get_element("register_password").send_keys("11111111")
    driver.execute_script('document.body.style.zoom="0.8"')
    get_code_image(file_name)
    text = code_online(file_name)
    get_element("captcha_code").send_keys(text)
    get_element("register-btn").click()
    driver.close()


run_main()
二、配置文件实现定位设计 1.创建.ini格式的配置文件

记录需要定位的元素

[RegisterElement]
user_email=id>register-email
user_name=id>register-nickname
password=id>register_password
code_image=id>getcode_num
code_text=id>captcha_code
2.封装读取配置文件的方法
# coding=utf-8
import configparser


class ReadIni(object):
    def __init__(self, file_name=None, node=None):
        if file_name is None:
            file_name = r"/config/LocalElement.ini"
        if node is None:
            self.node = "RegisterElement"
        else:
            self.node = node
        self.cf = self.load_ini(file_name)

    # 加载文件
    def load_ini(self, file_name):
        cf = configparser.ConfigParser()
        cf.read(file_name)
        return cf

    # 获取value值
    def get_value(self,key):
        data = self.cf.get(self.node, key)
        return data


if __name__ == '__main__':
    read_init = ReadIni()
    print(read_init.get_value('user_name'))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728816.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号