基于python+selenium的框架思路
设想:
1、使用excel编写用例第一个sheet页为用例概要格式如下:
后面的sheet页为具体的用例步骤:
实现所有定位信息都与测试代码分离
2、读取该excel文件取出关键字等信息,作为关键字的参数,通过反射机制传递给关键字方法去执行。
关键字模块如下:ObjectMap.py
# coding:utf-8
from selenium.webdriver.support.ui import WebDriverWait #获取单个页面元素对象
def get_element(driver, locationType, locatorExpression):
try:
element = WebDriverWait(driver, 30).until(lambda x:x.find_element(by=locationType,value = locatorExpression))
return element
except Exception, e:
raise e def get_elements(driver , locationType, locatorExpression):
try:
elements = WebDriverWait(driver, 30).until(lambda x:x.find_elements(by=locationType,value=locatorExpression))
return elements
except Exception, e:
raise e # 由于关键字函数的参数个数不一样,所以通过传递动态参数*args实现传参,关键字方法
# 最多需要(driver , locationType, locatorExpression, operationValue)四个参数
def open_browser(driver, *args):
driver.get(args[2]) def input_string(driver, *args):
WebDriverWait(driver, 30).until(lambda x: x.find_element(by=args[0], value=args[1])).send_keys(args[2]) def click(driver, *args):
WebDriverWait(driver, 30).until(lambda x: x.find_element(by=args[0], value=args[1])).click()
测试执行代码如下:
# coding:utf-8
from util import ObjectMap, ExcelUtil
import xlrd, xlwt
import time
from xlutils.copy import copy def baidu_search():
#初始化操作,创建driver
from selenium import webdriver
start_time = time.time()
# print start_time
driver = webdriver.Chrome()
#读取excel中的关键字的值,定位方式的值,定位表达式,和操作值等参数值。然后将参数值传到对应关键字方法中
excelFile = xlrd.open_workbook(r"D:\KeyWordsFrameWork\testScripts\search.xlsx", formatting_info=True)
sheet = excelFile.sheet_by_index(1)
maxRows = sheet.nrows
# print maxRows for row in range(1, maxRows-1):
keyword = sheet.row_values(row)[2]
locationType = sheet.row_values(row)[3]
locatorExpression = sheet.row_values(row)[4]
operationValue = sheet.row_values(row)[5]
# dir(ObjectMap)获取该模块的所有方法和变量
# print dir(ObjectMap)
for i in dir(ObjectMap):
if keyword == i:
# print i
# 要用到反射机制,通过函数名字符串调用对应方法:http://www.liujiangblog.com/course/python/48
if hasattr(ObjectMap, keyword):
# print '有这个方法'
func = getattr(ObjectMap, keyword)
func(driver, locationType, locatorExpression, operationValue)
end_time = time.time()
take_time = end_time-start_time
print take_time
excleFileCopy = copy(excelFile)
case_sheet = excleFileCopy.get_sheet(0)
case_sheet.write(1,5,take_time)
excleFileCopy.save(r"D:\KeyWordsFrameWork\testScripts\search.xlsx") if __name__ == '__main__':
baidu_search()
基于python+selenium的框架思路的更多相关文章
- 基于python+selenium的框架思路(二)
一.如下是用例格式,第一个sheet为用例汇总,后面的sheet为具体的用例步骤 sheet:测试用例 sheet:搜索 sheet:刘江博客验证 二.读取该excel文件取出关键字等信息,作为关键字 ...
- web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架
基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架 by:授客 QQ:1033553122 博客:http://blog.sina.com.cn/ishou ...
- 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...
- Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)
Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...
- 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...
- 基于python的接口测试框架设计(三)接口测试的框架
基于python的接口测试框架设计(三)接口测试的框架 其实我这里用到的是unittest单元测试框架,,这个框架好就好在比较清楚,,setup terdown都可以处理一些初始化及完成后的工作 主要 ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- python+selenium+unnittest框架
python+selenium+unnittest框架,以百度搜索为例,做了一个简单的框架,先看一下整个项目目录结构 我用的是pycharm工具,我觉得这个工具是天使,超好用也超好看! 这些要感谢原作 ...
- 【转】基于Python的接口测试框架实例
下面小编就为大家带来一篇基于Python的接口测试框架实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 背景 最近公司在做消息推送,那么自然就会产生很多接口,测试 ...
随机推荐
- Python 小结
1. Python pass是空语句,是为了保持程序结构的完整性. pass 不做任何事情,一般用做占位语句. 2.删除一个list里面的重复元素 方法一:是利用map的fromkeys来自动过滤重复 ...
- C#实现并口输出输入高低电位
PC并行口各阵脚定义: 1.选通,PC->Printer 2-9 数据(D0-D7) 10.应答(ACK),Printer->PC 11.忙(BUSY),Printer->PC 12 ...
- 获取用户的相关请求信息, 以及包括请求头 request.environ
#在index文件中 1. print(type(request)) #看出所属库 2. from django.core.handlers.wsgi import WSGIRequest #查看WS ...
- 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以
热更新是什么?简单的说就是打补丁,只补需要部分,不用重个游戏包重打上传 热更新问题的本质是代码更新而不是资源更新,为什么呢? 大型手游都是将补丁资源放在专门的WEB服务器上,游戏启动时动态下载并放入到 ...
- jira 安装
jira jira是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪(bug管理).客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域.同禅道等类似. 安装前准备 ...
- Scala基础:面向对象之对象和继承
对象 object 相当于 class 的单个实例,通常在里面放一些静态的 field 或者 method:在 Scala 中没有静态方法和静态字段,但是可以使用 object 这个语法结构来达到同样 ...
- Python实现常见算法[3]——汉罗塔递归
#!/usr/bin/python # define three list var. z1 = [1,2,3,4,5,6,7,"1st zhu"] z2 = ["2st ...
- SQL Server 2005/2008/2012中应用分布式分区视图
自2000版本起,SQL Server企业版中引入分布式分区视图,允许你为分布在不同的SQL 实例的两个或多个水平分区表创建视图. 简要步骤如下:根据Check约束中定义的一组值把大表分割成更小的一些 ...
- IOS操作系统上执行monkey测试
IOS操作系统上执行monkey测试 IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试.如果需要在真机上面执行,可以参考文档: htt ...
- [C++] Lvalue and Rvalue Reference
Lvalue and Rvalue Reference int a = 10;// a is in stack int& ra = a; // 左值引用 int* && pa ...