web端自动化测试框架之selenium4从入门到项目实战-1-selenium环境搭建-8-设计封装定位元素类、注册流程脚本进行模块化

1、设计封装定位元素类

# -*- coding: utf-8 -*- 
# @Time : 2021/12/24 13:01 
# @Author : jeffky
# @File : find_element.py
from util.read_ini import ReadIni
from selenium.webdriver.common.by import By
locator = {
    'id':By.ID,
    'name':By.NAME,
    'css':By.CSS_SELECTOR,
    'class_name':By.CLASS_NAME,
    'xpath':By.XPATH

}
class FindElement(object):
    def __init__(self,driver):
        self.driver = driver
    def get_element(self,key):
        read_ini = ReadIni()
        data = read_ini.get_value(key)
        by = data.split('>')[0]
        value = data.split('>')[1]
        try:
            element = self.driver.find_element(locator[by], value)
            return element
        except:
            return None

2、将整个注册流程脚本进行模块化

# -*- coding: utf-8 -*- 
# @Time : 2021/12/23 19:22 
# @Author : jeffky
# @File : 2-22-register_function.py

import random
import time
from selenium import webdriver
from PIL import Image
from util.dama import base64_api
from find_element import FindElement
class RegisterFunction(object):
    def __init__(self,url):
        self.driver = self.get_driver(url)
    #获取driver并且打开url
    def get_driver(self,url):
        driver = webdriver.Chrome()
        driver.get(url)
        driver.maximize_window()
        return driver
    #输入用户信息
    def send_user_info(self,key,data):
        self.get_user_element(key).send_keys(data)
    #点击按钮
    def click_button(self,key):
        self.get_user_element(key).click()
     #定位用户信息,获取element
    def get_user_element(self,key):
        find_element = FindElement(self.driver)
        user_element = find_element.get_element(key)
        return user_element

    def get_range_user(self,digit):
        '''
        随机数生成用户名
        :return:
        digit:位数
        '''
        user_info = ''.join(random.sample('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', digit))
        return user_info

    def get_code_image(self,file_name):
        '''
        获取图片
        :param file_name:
        :return:
        '''
        self.driver.save_screenshot(file_name)
        code_element = self.get_user_element('code_image')
        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(self,file_name):
        '''
        解析图片
        :return:
        '''
        self.get_code_image(file_name)
        result = base64_api(uname='jeffky', pwd='boyuan1993', img=file_name, typeid=3)
        return result
    def main(self):
        user_name = self.get_range_user(8)
        user_email = user_name + "@163.com"
        file_name = './img/imooc.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('password','111111')
        self.send_user_info('code_text',code_text)
        self.click_button('register_btn')
        time.sleep(5)
        self.driver.close()
if __name__ == '__main__':
    RegisterFunction('http://www.5itest.cn/register').main()


版权声明:本文为python_jeff原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。