1、pages
① BasePage.py
#coding=utf-8
'''
把所有页面公共公开的方法都封装在BasePage这个基类当中
'''
import unittest
class BasePage(unittest.TestCase):
@classmethod
def set_driver(cls,driver): #设置driver对象、保证所有的用例用的是同一个driver对象
cls.driver = driver
@classmethod
def get_driver(cls): #单例模式
return cls.driver #拿到driver对象、保证登录、发帖等等是同一个driver对象
@classmethod
def find_element(cls,element):
type = element[0]
value = element[1]
if type == 'id':
elem = cls.driver.find_element_by_id(value)
elif type == 'class':
elem = cls.driver.find_element_by_class_name(value)
elif type == 'xpath':
elem = cls.driver.find_element_by_xpath(value)
elif type == 'link_text':
elem = cls.driver.find_element_by_link_text(value)
elif type == 'css':
elem = cls.driver.find_element_by_css_selector(value)
else:
raise NameError('please input correct params')
return elem
@classmethod
def send_keys(cls,elem,text): #cls.driver.find_element_by_id(value)
# return cls.find_element(elem).send_keys(text)
return elem.send_keys(text)
@classmethod
def click(cls,elem):
elem.click()
@classmethod
def close(cls):
return cls.driver.close()
@classmethod
def get_text(cls,elem):
return BasePage.find_element(elem).text
@classmethod
def go_home(cls,elem):
'''回到首页'''
value = BasePage.find_element(elem)
BasePage.click(value)
# if __name__ == '__main__':
# m = BasePage()
# baidu_input = ('id', 'kw') # ==>page object设计模式
# elem = m.find_element(baidu_input)
② PageElement.py
#coding=utf-8
class PageElement:
#登录元素定位
userName = ('id', 'ls_username')
passWord = ('id', 'ls_password')
loginBtn = ('css', '.pn')
loginOut = ('xpath', '//*[@id="um"]/p[1]/a[7]')
#模块管理元素定位
module_management = ('link_text','模块管理')
submitBtn = ('xpath','//*[@id="submit"]/strong')
#回到首页
index = ('xpath','//*[@id="mn_forum"]/a')
2、utils
① HTMLTestRunner.py
②mail.py
③ReadConfigIni.py
#coding=utf-8
'''
配置文件的格式一般有哪些:
.ini .xlsx .yaml .conf .csv
'''
from configparser import ConfigParser #导入类
from bbs_framework.config.globalconfig import config
import os
class ReadConfigIni:
def __init__(self,filename):
self.cf = ConfigParser() #创建ConfigParser类的对象
self.cf.read(filename)
def get_ini_data(self,section, option):
'''或者ini后缀结尾的文件内容'''
value = self.cf.get(section, option)
return value
read_conf = ReadConfigIni(os.path.join(config,'config.ini'))
# print r.get_ini_data('path','project_path')
# print r.get_ini_data('env','url')
④ReadExcel.py
'''
1.在dos窗口用pip install xlrd ==》下载xlrd模块
2.这个xlrd模块是用来读取Excel表格的
'''
import xlrd
from bbs_framework.config.globalconfig import *
#拿到了data.xlsx文件的绝对路径和文件名称
datapath = os.path.join(data,'data.xlsx')
class ReadExcel:
def __init__(self,filename,sheetname):
'''打开Excel表格工作薄、拿到self.workbook对象'''
self.workbook = xlrd.open_workbook(filename)
#选择具体的sheet页面
self.sheet_name = self.workbook.sheet_by_name(sheetname)
def read_excel(self,rowx, colx):
'''封装一个读取Excel文件的工具方法'''
value = self.sheet_name.cell(rowx, colx).value
return value
r = ReadExcel(datapath,'Sheet1')
print (r.read_excel(1,0)) #通过索引值拿到url地址