Selenium WebDriver + python 自动化测试框架
目标
组内任何人都可以进行自动化测试用例的编写
完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤、检查点,然后执行自动化工程,即可执行功能自动化测试用例,包括测试结果、测试报告。
任何一台安装了JDK环境的windows机器都可以直接运行,不必考虑运行环境的问题。
整理了一下目前使用的自动化测试框架,基于Selenium WebDriver + python,关键字驱动,简单总结一下。
自动化工程:
driver 目录 ----浏览器驱动(支持chrome、IE浏览器)
data目录 ----上传场景使用的图片(具体业务相关)
Picture目录 ----测试用例失败截图
TestCase_UI.exe ----主程序(使用pyinstaller打包发布)
Test.xls ----测试用例(重点关注)
测试用例(***.xls文件)
包括4个sheet分页,详情如下:
1、PageElements 分页
模块:具体的测试业务模块
页面元素:页面具体操作的元素
例如“我的工作台-搜索输入框”,“我的工作台”就是模块名称,“搜索输入框”就是需要操作的元素
关键字:指的是元素的操作方式
例如文本输入框封装的关键字是input,按钮是click,断言是assert,这个是封装在自动化测试工程中的
页面定位元素:元素定位方式,支持8种定位方式:id、class、name、link…xpath、css
页面元素定位表达式:
例如//*[@id='tip_about_info']/div[2]/span,采用xpath定位
如下的元素(输入框),关键字-input、页面定位元素-id、页面元素定位表达式- plantformSearchInput
二级定位:页面包含多个iframe 时,采用二级定位的方式进行页面元素定位
2、TestConfig 分页
配置信息
Driver:根据填写的数据启动不同的浏览器,支持chrome、IE
URL:测试网址
PageElements:根据填写的数据,读取数据源,支持excel、py
**Report:测试报告的标题,可以定制
3、TestSuite 分页
每行数据表示一个测试用例
测试用例序号:唯一,不能重复
测试用例描述:说明该条测试用例的目的
前置条件:方便用户维护用例,可以为空
操作步骤:同上
预期结果:同上
是否执行:执行标识,yes执行、no不执行
测试结果:测试用例执行结果
4、TestSteps 分页
测试用例的执行步骤
1、2、3行为登录操作,填写用户名、密码,不用修改
测试用例序号:对应TestSuite分页的测试用例序号,一个测试用例多个步骤,测试用例序号相同
测试模块:业务模块
测试用例步骤描述:对应PageElements分页的“页面元素”列
操作值:主要是文本输入框输入的数据
检查点:测试步骤的检查点,一条用例可包含多个检查点
测试结果:用例步骤执行成功、用例步骤执行失败
一个用例存在多个测试步骤,任意步骤执行失败,不在执行剩下的步骤,直接执行下个测试用例,失败的步骤填写“用例步骤执行失败”
页面截图:用例步骤执行失败的步骤截图
Sheet页面对应关系说明:
TestSuite 分页的测试用例序号对应TestSteps 分页的测试用例序号
PageElements 分页的测试步骤描述对应TestSteps 分页的测试步骤描述
自动化用例执行过程
命令行中直接输入自动化测试工程文件的名称,即可开始测试用例执行,打印具体测试过程。
用例报告
用例执行完成,在report目录中生成html格式的报告,方便jenkins持续集成使用
报告内容如下(可定制)
查看执行结果
TestSuite 分页
TestSteps 分页
Selenium WebDriver + python 自动化测试框架的更多相关文章
- selenium webdriver (python) 第二版
前言 对于大多软件测试人员来讲缺乏编程经验(指项目开发经验,大学的C 语言算很基础的编程知识)一直是难以逾越的鸿沟,并不是说测试比开发人员智商低,是国内的大多测试岗位是功能测试为主,在工作时间中,我们 ...
- selenium webdriver (python)2
selenium webdriver (python) 第二版 前言 对于大多软件测试人员来讲缺乏编程经验(指项目开发经验,大学的C 语言算很基础的编程知识)一直是难以逾越的鸿沟,并不是说测试比开发 ...
- selenium webdriver (python)
selenium webdriver (python) 第一版PDF Posted on 2013-08-30 22:59 虫师 阅读(221) 评论(0) 编辑 收藏 前言 如果你是一位有pytho ...
- selenium webdriver (python) 第三版
感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...
- 【转】推荐4个不错的Python自动化测试框架
之前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架.一个测试框架应该具有最佳的测试用例.假设(assumptions).脚本和技术来运行每一 ...
- 【转】Selenium WebDriver + Python 环境
转自:http://www.myext.cn/webkf/a_11878.html 1. 下载必要工具及安装包 1.1 [Python开发环境] 下载并安装Python 2.7.x版本 下载地址:ht ...
- Selenium WebDriver + Python 环境配置
1. 下载必要工具及安装包 1.1.[Python开发环境] 下载并安装Python 2.7.x版本(当前支持2.x版本,不要下载最新的3.X的版本因为python3并非完全兼容python2) ...
- selenium webdriver testng自动化测试数据驱动
selenium webdriver testng自动化测试数据驱动 selenium webdriver testng自动化测试数据驱动 一.数据驱动测试概念 数据驱动测试是相同的测试脚本使用不同的 ...
- 杂项-自动化测试工具:Selenium(浏览器自动化测试框架)
ylbtech-杂项-自动化测试工具:Selenium(浏览器自动化测试框架) Selenium 是一个用于Web 应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一 ...
随机推荐
- 《JavaScript面向对象编程指南(第2版)》读书笔记(一)
目录 一.对象 1.1 获取属性值的方式 1.2 获取动态生成的属性的值 二.数组 2.1 检测是否为数组 2.2 增加数组长度导致未赋值的位置为undefined 2.3 用闭包实现简易迭代器 三. ...
- 搜索结果Refinement 行为总结之 multi-selection refinement
几乎所有的购物网站的搜索结果页面都会提供refinement (filtering) 给用户去过滤产品,以便能更快找到自己想要的产品.(做的都是国外的项目,不太清楚这个功能地道的中文名是什么.所以就暂 ...
- Java 8 lambda初试
λ表达式本质上是一个匿名方法.让我们来看下面这个例子: public int add(int x, int y) { return x + y; } 转成λ表达式后是这个样子: (int x, int ...
- ES6入门
整理了ES6常用的一些语法,跟大家分享(promise.generator什么的还没有梳理清楚,后续再更新...) 1⃣️ 变量声明-let 与 const (首先关于测试结果:这里有个小问题,如果用 ...
- Atom打造 c/c++编译环境(忙了一个上午)
众所周知 Atom是一款非常酷炫的编辑器.因为它就像上古卷轴一样,玩家可以开发各种dlc补丁,实现自己想要的效果.所以Atom 可以被你改造成自己想要的东西,可以用来写算法竞赛题目,可以开发网页,可以 ...
- 微信小程序后台音乐播放注意事项
wx.seekBackgroundAudio(OBJECT) 作用:控制音乐播放进度. 注意: 该事件 会触发 wx.onBackgroundAudioPlay(CALLBACK) 事件 ,也就是相当 ...
- bzoj4818 [Sdoi2017]序列计数
Description Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数.Alice还希望,这n个数中,至少有一个数是质数.Alice想知道,有多少个序 ...
- PHP 序列化与反序列化函数
序列化与反序列化 把复杂的数据类型压缩到一个字符串中 serialize() 把变量和它们的值编码成文本形式 unserialize() 恢复原先变量 1.创建一个$arr数组用于储存用户基本信息 ...
- gsoap创建webservice服务简单教程
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] WebServicesoapgsoap 使用gsoap创建webservice服务 下载gsop 准备待导出的服务接口定义文件比 ...
- Android打开其它应用程序
PackageManager pm = getPackageManager(); Intent i = pm.getLaunchIntentForPackage(packageName); start ...