最近学习所写的是简单的163自动化登录测试。但是真正实际的项目不可能那么简单的,经过最近的学习和简单的实战项目的操作,整理了一下思路,大致框架结构为:浏览器,页面基础类的封装—》定位元素的封装—》自动截图,发送附件,获取最新报告,发送邮件的封装—》测试用例的封装—》最后整合完成自动化测试并获取生成报告与截取图片发送到指定邮箱,下面贴上代码。
框架结构:
BrowserApi.py(浏览器封装,使用隐式界面模式很大几率被退信)
from selenium import webdriver
def browser():
"""
系统常量类
"""
driver = webdriver.Chrome()
"""设置浏览器隐式启动,减少页面渲染元素所占的cpu内存"""
# options = webdriver.ChromeOptions() # 创建chrome参数对象
# options.add_argument("headless") # 启动无界面模式,消除页面渲染引发的cpu、内存过高
# options.add_argument("blink-settings=imagesEnabled=false") # 不加载图片
# driver = webdriver.Chrome(options=options) # 创建chrome无界面参数
return driver # 返回浏览器
if __name__ == '__main__':
browser()
Page_contsant.py(页面基础类封装)
from time import sleep
class SysConstant():
"""
系统常量页面基础类
"""
"""初始化"""
def __init__(self,driver):
self.driver = driver
self.base_url = "https://mail.163.com"
self.timeout = 10
"""私有方法"""
def open_dir(self):
self.driver.maximize_window()
self.driver.get(self.base_url)
sleep(2)
"""内嵌网页frame封装定位"""
def frame_url(self):
self.driver.switch_to_frame(0)
"""元素定位方法封装"""
def find_element(self,*loc): # 形参,参数数量不固定,加*
return self.driver.find_element(*loc)
TestEnvironmental.py(环境准备)
import unittest
from BrowserApi import *
class StarEnd(unittest.TestCase):
"""
系统常量类
"""
"""封装用例开始与结束环境"""
def setUp(self) -> None:
self.driver = browser()
self.driver.implicitly_wait(10)
self.driver.maximize_window()
def tearDown(self) -> None:
self.driver.delete_all_cookies() # 清除cookie
self.driver.close()
self.driver.quit()
function.py(截图,获取报告,获取所截图,发送邮件封装)
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
def inser_img(driver,image):
"""
封装自动截图保存的方法
:param image:
:param driver: 浏览器
:param splice: 截图存放路径
:return:
"""
current_path = os.path.dirname(__file__