热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Web自动化涉及的技术及框架介绍

一.Selenium是一个用于Web应用程序的自动化测试的工具支持的浏览器有IE,FireFOx,Chrom等,这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是




一.Selenium

是一个用于Web应用程序的自动化测试的工具支持的浏览器有IE,FireFOx,Chrom等,这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。


二.testNg测试框架

testNg是一个Java的测试框架,主要用来做自动化


  1. 利用Parameters注解将test.xml中启动的浏览器(IE,FireFOx,Chrom等)参数传递给初始化浏览器驱动的方法
    2 .利用注解实现测试方法的执行顺序,比如:
    利用@BeforeSuite注解在test.xml中在某个测试套件(suite)所有测试方法执行前选择浏览器驱动和加载元素定位方法
    利用@AfterSuite注解在test.xml中在某个测试套件(suite)所有测试方法执行结束后退出浏览器驱动
    3.支持数据驱动,DataProvider注解的方法是数据提供者,一般返回Object[][] 和 Iterator两种类型,
    Test注解的方法是数据接收者,接收DataProvider注解的方法传过来的数据进行测试
    Iterator:用于把数据存入在一个实体类里,即数据按“对象”存储
    Object[][]:一般把数据存放在Excel里
    4.利用testNg的IHookable监听器实现失败截图**,并把失败截图附到Allure测试报告中**
    4.1.新建一个类实现把截图存放在指定路径中(getScreenshotAs)的方法
    4.2.新建一个类实现IHookable接口,有一个方法调用截图方法把方法和截图附到Allure报告中
    另一个方法需重写run方法,如果标注为@Test的方法出现异常则调用2中的方法测试方法实现失败截图
    5.利用testNg的IAnnotationTransformer,ITestListener监听器实现全局失败重试
    5.1.新建一个类实现实现IRetryAnalyzer接口,重写retry方法,有两个变量:运行重试的最大次数和公共静态变量正在运行的次数
    5.2.新建一个类实现IAnnotationTransformer接口,重写transform方法,作用是监听所有被Test标注的方法是否有retryAnalyzer属性
    如果有次属性,则不会执行我们设定的重跑机制
    5.3.新建一个类继承TestListenerAdapter类,重写onTestFailure和onTestSuccess方法,作用是每条案例重跑次数用完后,重置当前正在运行的次数为初始值
    以便于下一条案例失败重试
    5.4.新建一个类实现ITestListener接口,重写onFinish方法,作用是把重试的方法都记录到skipped里了,会影响测试报告总数,所有记录要从skipped移除
    5.5.将2.3.4步的监听器添加到在test.xml中
    6.支持并发测试,testng.xml中
    parallel:TestNG是否运行不同的线程来运行这个套件,默认为none,其他级别为methods、tests、classes、instances
    7.可通过testng.xml管理执行测试用例

三.Allure生成测试报告

Allure是一款轻量级并且非常灵活的开源测试报告框架,它支持绝大多数测试框架, 例如TestNG
四.利用Excel进行测试案例管理
表头:IsNegative(是否为正向用例),Desc(用例描述),ErrorTips(错误提示期望值),页面输入框字段 等
每一个Excel的Sheet数据都要要封装成一个对象,所以每个excel的Sheet的表头都要新建实体类
利用POI技术读取EXCEl中的数据,利用反射把Excel的数据存入到List集合中,然后把List集合转换成为二维数组,因为DataProvider注解的方法是数据提供者,一般返回Object[][] 。


四.利用Jenkins进行持续集成

源码管理:Svn,构建触发器:H 20 * * 1,3,5每周1/3/5执行20点一次,构建:maven命令clean test执行测试,构建后操作:发送邮件(Allure报告,构建日志)


五.公用方法

1.选择浏览器驱动
2.加载json字符串
3.初始化1和2的方法
4.获取WebElement方法
5.定位元素高亮显示
6.访问某一地址
7.写入内容
8.点击
9.获得文本值
10.切换Iframe
11.断言
12.下拉选择
13.多窗口的切换
14.退出浏览器
15等待
16.执行Js函数
17.判断页面加载超时
18弹出框处理
19键盘操作



推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
author-avatar
甜甜deX
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有