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_code2.封装读取配置文件的方法
# 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'))



