python web自动化测试框架搭建(功能&接口)——功能测试模块
功能测试使用selenium,模块有:

1、futil: 公共方法,如元素高亮显示
# coding=utf-8
"""高亮显示元素"""
def highLight(driver,element):
js = '''
element = arguments[0];
element.setAttribute('style','border: 3px solid red;')
'''
driver.execute_script(js,element)
2、models: 页面控件和页面操作方法封装
页面基类BasePage.py
# coding=utf-8
from selenium import webdriver TIME_OUT=5 #超时时间 class BasePage(object):
def __init__(self, driver):
"""初始化浏览器"""
self.driver = driver
'''
if driver_type == "ie":
try:
self.driver = webdriver.Ie()
except Exception,e:
print e
elif driver_type == "chrome":
try:
self.driver = webdriver.Chrome()
except Exception,e:
print e
else:
try:
self.driver = webdriver.Firefox()
except Exception,e:
print e
''' def opendriver(self, url):
self.driver.get(url)
self.driver.maximize_window()
self.driver.implicitly_wait(TIME_OUT) def find_element(self, by, value):
"""查找元素"""
try:
return self.driver.find_element(by=by, value=value)
except Exception, e:
print e def find_elements(self, by, value):
"""查找元素集合"""
try:
return self.driver.find_elements(by=by, value=value)
except Exception, e:
print e def is_element_isexist(self, By, Value):
"""判断元素是否存在"""
try:
self.driver.find_element(by=By, value=Value)
return True
except Exception, e:
print e
return False def close(self):
"""当前关闭浏览器tab"""
try:
self.driver.close()
except Exception,e:
print e def quit(self):
"""退出浏览器进程"""
try:
self.driver.quit()
except Exception,e:
print e
具体页面封装和操作LoginPage.py
# coding=utf-8
from BasePage import BasePage
from selenium.webdriver.common.by import By class LoginPage(BasePage):
'''
登录页面的登录窗口
'''
user_name = (By.NAME, "username")
pass_word = (By.NAME, "password")
btn_login = (By.CLASS_NAME, "login-btn") def __init__(self, driver):
BasePage.__init__(self, driver)
self.driver = driver
self.input_username = self.find_element(*self.user_name)
self.input_password = self.find_element(*self.pass_word)
self.btn_login = self.find_element(*self.btn_login) def login(self, username, password):
self.input_username.send_keys(username)
self.input_password.send_keys(password)
self.btn_login.click()
# coding=utf-8
from BasePage import BasePage
from selenium.webdriver.common.by import By class Index(BasePage):
'''
首页
'''
user_menu = (By.ID, "userSetting")
user_info = (By.XPATH, "//a[@href='user/userInfo']")
language_span = (By.ID, "changeLanguage")
chinese_li = (By.XPATH, "//li[@value='zh_cn']")
english_li = (By.XPATH, "//li[@value='en']") def __init__(self, driver):
BasePage.__init__(self, driver)
self.driver = driver
self.usermenu = self.find_element(*self.user_menu)
self.userinfo = self.find_element(*self.user_info)
self.languagespan = self.find_element(*self.language_span)
self.chinase = self.find_element(*self.chinese_li)
self.english = self.find_element(*self.english_li) def chengeLanguage(self):
self.languagespan.click()
self.english.click()
self.driver.implicitly_wait(5)
2、Report: 测试报告文件夹
3、testcases: 具体测试用例实现
测试用例基类BaseCase.py,负责执行用例运行前和运行结束后操作
# coding=utf-8 import unittest
import Logger
from selenium import webdriver log = Logger.Loger()
class BaseCaseClass(unittest.TestCase): def setUp(self):
# options = webdriver.ChromeOptions()
# options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
# options.add_argument("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default");
# self.driver = webdriver.Chrome(chrome_options=options)
self.driver = webdriver.Ie()
self.url = "http://baidu.com" def tearDown(self):
self.driver.close() def loginfo(self, msgStr):
log.info(msgStr)
具体用例:
# coding=utf-8 from BaseCase import BaseCaseClass
from functiontest.models.LoginPage import LoginPage
from functiontest.models.IndexPage import Index
from functiontest.futil import Util class CheckLogin(BaseCaseClass): def runTest(self):
'''
name:测试标题为:XX系统
verbosity:0
'''
self.driver.get(self.url)
loginPage = LoginPage(self.driver)
self.assertEqual(loginPage.driver.title,u"XX系统","标题不正确") class CheckIndex(BaseCaseClass): def runTest(self):
'''
name:测试首页存在个人资料选项
verbosity:0
'''
self.driver.get(self.url)
#self.driver.switch_to_window(self.driver.window_handles[1])
loginPage = LoginPage(self.driver)
loginPage.login("admin", "xxx")
indexPage = Index(self.driver)
indexPage.chengeLanguage()
indexPage = Index(self.driver)
indexPage.usermenu.click()
Util.highLight(self.driver, indexPage.userinfo)
self.assertEqual(indexPage.userinfo.text, "Personal Data","标题不正确")
python web自动化测试框架搭建(功能&接口)——功能测试模块的更多相关文章
- python web自动化测试框架搭建(功能&接口)——接口测试模块
Python接口测试采用python读取excel的方法,通过requests库发送请求和接收响应.模块有: Data:用于存放excel用例的,用例格式: iutil: 接口公共方法,数据引擎.ht ...
- python web自动化测试框架搭建(功能&接口)——通用模块
1.通用模块: config.conf: 公共配置文件,配置报告.日志.截图路径,以及邮件相关配置 [report] reportpath = E:\workspace\WebAutomation\s ...
- python web自动化测试框架搭建(功能&接口)——接口用例实现
测试用例基类: # coding=utf-8 import unittest import Logger log = Logger.Loger() class BaseCase(unittest.Te ...
- python web自动化测试框架搭建(功能&接口)——接口公共方法
接口公共方法有:数据引擎.http引擎.Excel引擎 1.数据引擎:获取用例.结果检查.结果统计 # -*- coding:utf-8 -*- from XlsEngine import XlsEn ...
- python web自动化测试框架搭建(功能&接口)——测试用例执行和结果收集
由于unittest框架中结果收集在不同文件中,所以此处重写结果收集方法,加入执行时间,失败信息,失败截图等 TestRunner.py # coding=utf-8 import sys impor ...
- Python web自动化测试框架搭建(功能&接口)——unittest介绍
Python UnitTest测试框架介绍 1) TestCase:所有测试用例类继承的基本类, TestCase的实例就是测试用例 2) TestSuite:测试套件 ...
- python web自动化测试框架搭建(功能&接口)——环境搭建
自动化测试框架一般需要实现以下通用功能 执行前准备 结束后清理 执行步骤输出 执行结果输出 错误.失败截图 测试报告 发送邮件 日志 需要的软件和python第三方库有: 通用: JDK Eclips ...
- 基于python的自动化测试框架搭建
滴~ 今日打卡! 好多天没来打卡了.博主最近一直在把碎片化知识转化为知识体系的过程中挣扎.Python语言.selenium.unittest框架.HTMLTestRunner框架都有所了解,也写 ...
- selenium +python web自动化测试环境搭建
基础框架搭建 1.安装python 2.安装selenium cmd输入pip install selenium 问题:在python中输入from selenium import webdriver ...
随机推荐
- Java-第N篇推荐的一些学习书籍
1.推荐的一些学习书籍或者需要掌握的基本知识 book | |---ant | |---maven | |---git(菜鸟教程) | |---Dos shell | |---linux常用的命令.l ...
- 一个 Java 字符串到底有多少个字符?
来源:http://dwz.win/jqd 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), 也就是一个字 ...
- vue观察模式浅析
以下是我对vue观察者模式的理解:github L6zt 加入tip 2018-10-14 最近又看到<js设计模式设计>书 推荐去搂搂不要对框架的偏见, 你真的了解jquery.angu ...
- jmeter 线程数—请求数详解
一个性能测试请求负载是基于一个线程组完成的.一个测试计划必须有一个线程组.测试计划添加线程组非常简单.在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选 ...
- 处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
//处理键盘事件 禁止后退键(Backspace)密码或单行.多行文本框除外 function forbidBackSpace(e) { var ev = e || window.event; //获 ...
- 【推荐系统】知乎live入门5.常用技能与日常工作
参考链接 [推荐系统]知乎live入门 目录 1. 实习与求职 2. 推荐算法职责 3. 解构算法 4. 参考资料 5. 其他强关联岗位 6. 工作模型和日常工作 7. 2017年相关论文 8. 找工 ...
- vue函数防抖和节流
Vue函数防抖和节流https://zhuanlan.zhihu.com/p/72363385 <template> <div> <input type='text' v ...
- git 和码云的上传文件代码操作
Git与Github的连接与使用 一 安装git软件 1.git介绍 ''' git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 分布式相比于集中式的最大区别在于开发 ...
- Linux用户都应该了解的命令行省时技巧
每个Linux用户都应该了解的命令行省时技巧 有网友在问答网站Quora上提问:“有哪些省时小技巧,是每个Linux用户都应该知道的?” Joshua Levy 平常就在 Linux 平台工作,并且他 ...
- leetcode69. x 的平方根 🌟
题目: 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 ...