python selenium框架_基于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的框架思路相关推荐
- python管理系统设计_基于Python和Django框架的物联网智能设备管理系统的设计与实现
杨武帅 万启元 桑贤伯 摘 要:针对目前日益增多的智能设备提出了兼容性好,稳定性高,易于管理的管理系统的设计方法.在服务器端使用Python和Django框架进行与设备的数据交互及设备管理网站的构架, ...
- 基于python爬虫数据处理_基于Python爬虫的校园数据获取
苏艺航 徐海蛟 何佳蕾 杨振宇 王佳鹏 摘要:随着移动时代的到来,只适配了电脑网页.性能羸弱的校园教务系统,已经不能满足学生们的移动查询需求.为此,设计了一种基于网络爬虫的高实用性查询系統.它首先通过 ...
- python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...
Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具,他的前身是Selenium .Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozi ...
- python 量化交易_基于Python的量化交易工具清单(上)
-- Python量化工具清单 -- 以下内容来源于Wilson Freitas的Github项目"Awesome Quant".原文中包含了丰富的语言类别,但是后续介绍主要针对P ...
- python机器视觉教材_基于Python的机器视觉实验教学平台设计
基于 Python 的机器视觉实验教学平台设计 韩志豪 ; 刘晓英 [期刊名称] <计算机测量与控制> [年 ( 卷 ), 期] 2020(028)003 [摘要] 针对机器视觉领域的学习 ...
- python通信自动化测试_基于Python的无线通信设备自动化测试软件的研制
基于Python的无线通信设备自动化测试软件的研制 中国电子科技集团公司第十研究所 冯启俊 [期刊名称]<电子世界> [年(卷),期]2019(000)015 [总页数]2 无线通信设备的 ...
- python新闻聚合_基于Python的新闻聚合系统网络爬虫研究
基于 Python 的新闻聚合系统网络爬虫研究 左卫刚 [摘 要] 摘 要 本研究旨在创建一个能够从不同页面布局中提取数据的开源爬 虫,其中包括网络爬虫. API .网络爬虫调度器以及 Socket ...
- python 英语分词_基于Python NLTK库进行英文文本预处理
文本预处理是要文本处理成计算机能识别的格式,是文本分类.文本可视化.文本分析等研究的重要步骤.具体流程包括文本分词.去除停用词.词干抽取(词形还原).文本向量表征.特征选择等步骤,以消除脏数据对挖掘分 ...
- python回归算法_基于Python的函数回归算法验证
看机器学习看到了回归函数,看了一半看不下去了,看到能用方差进行函数回归,又手痒痒了,自己推公式写代码验证: 常见的最小二乘法是一阶函数回归 回归方法就是寻找方差的最小值 y = kx + b xi, ...
- 浙江农林大学python期末考试_基于Python的地图匹配最短路径法实现
117 科学论坛 在智能交通领域,众所周知,智能 交通系统在当今世界道路交通网络的管 理中发挥着重要的作用,而车辆导航系 统又是智能交通系统的重要组成部分. 在车辆导航系统中,定位的精确性和实 时性是 ...
最新文章
- Chrome检查更新总失败?安装细则讲解
- 揭秘华为麒麟990 5G:提前3年布局,百亿晶体管把7nm用到了极致
- ubuntu15.10避免图形界面无法登录的jdk配置
- 解决 Successfully created project '' on GitHub, but initial push failed: Could not read from remote re
- AI:IPPR的数学表示-CNN可视化语义分析
- python变量类型怎么决定的_Python数据类型提示痛点的解决方案探讨
- v7000更换电池步骤_ups电源运行中是否可以更换电池?应如何操作呢
- java ByteBuffer flip()和limit()的理解
- CheckedListBoxControl 实现复选框的单选与多选功能
- 快讯:永中集成Office的核心技术落入谁的手?
- Java-String类常用方法汇总
- OpenContrail 体系架构文档
- Agile实践之Kanban工具: Wekan
- DruidDataSource配置说明
- Lambda将搬砖变成艺术
- 服务器vga接显示器无信号,显示器用HDMI转VGA接口后,无信号怎么解决
- Qt中鼠标的双击事件和单击事件的实现方式
- loadrunner入门教程(24) --Load Generator
- Java调用MySQL并返回数据_Java调用MySQL存储过程并获得返回值的方法
- CCRC中国网络安全审查技术与认证中心 物联网安全技术工程师(ISTE)开课通知