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_第一年_JavaWeb(15)
Filter过滤器,Servlet API 中提供了一个Filter接口,用于实现用户在访问某个目标资源前对其进行拦截: 拦截原理:web服务器通过Filter接口调用doFilter方法,会传递一个 ...
- vmware 中标麒麟系统安装VM tools
打开虚拟机系统,选择菜单虚拟机->安装VMware TOOLs,下载后找到文件. 我的文件名称是 VMwareTools-10.2.5-8068393.tar.gz, 在终端里输入:tar xv ...
- STM32启动地址设置及从非0x800000 开始调试程序
首先设置程序的启动地址,STM32默认的启动地址是从0x8000000开始的,现在我要设置程序向后偏移10K地址,也就是从0x8002800启动. 需要分两步完成上面操作: 一.Keil MDK设置: ...
- 大数加减(51nod)
1005 大数加法 给出2个大整数A,B,计算A+B的结果. 输入 第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数) 输出 输出A + B ...
- python 二维数组转一维数组
三种方法 比如 a = [[1, 2], [3, 4], [5, 6]] 列表推导式 [i for j in a for i in j] 库函数 from itertools import chain ...
- grunt默认只允许localhost和访问,如何设置外部IP地址访问
转载请注明出处: 猩猩队长 http://www.cnblogs.com/wayns/p/access_grunt_server_from_outside.html 使用Yeoman生成器创建web ...
- Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介
以下转载自:http://hongweiyi.com/2013/03/apache-solr-facet-introduction/ 1.什么是Faceted Search Facet['fæsɪt] ...
- TensorFlow学习笔记1:graph、session和op
graph即tf.Graph(),session即tf.Session(),很多人经常将两者混淆,其实二者完全不是同一个东西. graph定义了计算方式,是一些加减乘除等运算的组合,类似于一个函数.它 ...
- liunx-centos-基础命令详解(1) -主要内容来自 —https://www.cnblogs.com/caozy/p/9261224.html
关机:halt/poweroff :立刻关机reboot :立刻重启 shutdown -r now :立刻重启shutdown -h 00:00 :定时重启 now:立刻shutdown -h +n ...
- python函数传参和返回值注意事项
函数传参 空参数 定义函数时括号里面没有形参,调用时不用传参. def func(): print('null para.') # 调用 func() 位置传参 规定形参的数量,调用时必须传递相同数量 ...