Selenium+Java完整框架搭建(2019完整版)
一、WebDriver框架开发实战
1、框架的思想
(1)什么是框架?
- 框架是可以被应用开发者定制的应用骨架
(2)为什么要写框架?
- 提高脚本可维护性
- 提高编写脚本的速度
- 提高脚本可阅读性
(3)框架的几个要素?
- driver管理,等待管理,常用方法封装,LOG,常用类封装,数据,失败重跑等等
2、前期准备-框架搭建前期步骤
- 通过IDEA新建个项目名TestAutomation2019的Maven工程
- 导入Selenium和TestNG对应的jar包
- 在工程根目录新建一个driver文件夹,放置driver
- 新建一个包:com.lixx
3、Driver管理
- 在com.lixx下新建driver包
- 在driver包下新建SeleniumDriver类
- 封装driver
- 代码实例演示
- 测试
package com.lixx.drivers;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
public class SeleniumDriver1 {
public static WebDriver driver;
public static WebDriver initialDriver(String browser){
//获取当前工程根目录
String path = System.getProperty("user.dir");
if (browser.equals("chrome")){
System.setProperty("webdriver.chrome.driver", path + "/driver/chromedriver.exe");
driver = new ChromeDriver();
}else if (browser.equals("ie")){
System.setProperty("webdriver.ie.driver", path + "/driver/IEDriverServer.exe");
driver = new InternetExplorerDriver();
}else if (browser.equals("firefox")){
driver = new FirefoxDriver();
}else if (browser.equals("edge")){
System.setProperty("webdriver.edge.driver", path + "/driver/MicrosoftWebDriver.exe");
driver = new EdgeDriver();
}else {
System.out.println("您输入的浏览器名称有误,请确认!");
}
return driver;
}
}
4、元素等待方法封装
- 在com.autoframework下新建element包
- 在element包下新建WebElementUtils类并继承SeleniumDriver类
- 二次封装findElement和findElements方法
- 代码实例演示
- 测试
5、Log4j整合
- 配置pom.xml文件,添加log4相关jar包
- 在工程根目录下新建configs文件夹并新建log4j.properties文件
- 在log4j.properties配置文件中加入需要的配置
- 新建com.lixx.logger包
- 在logger包下新建LoggerController类
- 代码示例
- 测试
6、框架常用类整合
常用类封装-随机数封装
- 在com.autoframework下新建tools包
- 在tools包下新建RandomNum下
- 实现时间戳和随机数生成
- 部分常用方法封装实例演示
- 测试
截图方法封装
Assert类封装
通过TestNg做数据驱动
PO理念的引入
监听错误自动重跑和截图
- 从github上下载已经封装好的程序 https://github.com/NetEase/arrow
- 复制到项目里面,修改各个类导入包的路径
- 删除我们不想要PowerEmailableReporter.java文件
- 在config文件下新建config.properties文件,并添加如下:retrycount=1
- 修改ConfigReader.java类,读取配置文件路径
- 添加自动截图方法到TestResultListener.java类
- 在运行的.xml文件里面添加监听
Selenium+Java完整框架搭建(2019完整版)的更多相关文章
- WEB学习路线2019完整版(附视频教程+网盘下载地址)
WEB学习路线2019完整版(附视频教程+网盘下载地址).适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利.高薪水的职业了.所以现在学习web前端开发的技术人员也是 ...
- Ubuntu+Apache+PHP+Mysql环境搭建(完整版)
Ubuntu+Apache+PHP+Mysql环境搭建(完整版) 一.操作系统Ubuntu 14.04 64位,阿里云服务器 二.Apache 1.安装Apache,安装命令:sudo apt-get ...
- Ubuntu+Apache+PHP+Mysql环境搭建(完整版)(转)
http://www.2cto.com/os/201505/401588.html Ubuntu+Apache+PHP+Mysql环境搭建(完整版) 一.操作系统Ubuntu 14.04 64位,阿里 ...
- selenium+testN自动化测试框架搭建
自动化测试框架搭建 1 Java环境的搭建 1.1访问oracle的官网下载最新版本的jdk http://www.oracle.com/technetwork/java/javase/downloa ...
- 行为驱动:Cucumber + Selenium + Java(一) - 环境搭建
1.1 什么是行为驱动测试 说起行为驱动,相信很多人听说过. 行为驱动开发-BDD(Behavior Driven Development)是一个诞生于2003年的软件开发理念.其关键思想在于通过与利 ...
- selenium+testNG自动化测试框架搭建
自动化测试框架搭建 1 Java环境的搭建 1.1访问oracle的官网下载最新版本的jdk http://www.oracle.com/technetwork/java/javase/downloa ...
- Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性
在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; ...
- Unity 游戏框架搭建 2019 (三十二、三十三) 类的命名 & 代码文件命名
昨天我们完成了第八个示例的第二个 MenuItem 菜单顺序的调整. 我们今天再往下接着调整. 我们来看下接下来的 MenuItem 代码如下: [MenuItem("QFramework/ ...
- Unity 游戏框架搭建 2019 (五十六/五十七) 需求分析-架构中最重要的一环&从 EmptyGO 到 Manager Of Managers
我们的项目开始立项的时候,最常见的一个情况就是:几个人的小团队,一开始什么也不做,就开始写代码,验证逻辑,游戏就开始写起来了.而公司的一些所谓的领导层面一开始就把游戏定义为我们要做一个大作.这个事情本 ...
随机推荐
- 使用kubeadm安装Kubernetes 1.15.3 并开启 ipvs
一.安装前准备 机器列表 主机名 IP node-1(master) 1.1.1.101 node-2(node) 1.1.1.102 node-3(node) 1.1.1.103 设置时区 cp / ...
- 第十二周LINUX学习笔记
zabbix zabbix-server: 监听的端口10051 zabbix-agent: 10050 Zabbix: Item, Key(键) ethercard.traffic[eth0] ac ...
- Django如何与JQuery进行数据通信?
index.html: 下面form的action属性表示当提交表单时,向何处发送表单数据 <script src="https://code.jquery.com/jquery-3. ...
- Linux学习24-腾讯云服务器开启swap分区
前言 最近有小伙伴买的腾讯云的1核1G入门级服务器,发现部署的服务多了后,会自动停掉一些docker的的容器. 新买的腾讯云主机没有提供Swap分区,理由是由于主机经常因为内存使用率过高,频繁使用Sw ...
- jenkins中jmeter项目流程图
- 20180418模拟赛T1——Seq
Seq (seq.cpp/c/pas) 题目描述 Description 木吉要去征讨VAN様,所以他现在需要从他身边的人中选出若干位陪同.现在有\(n\)个人站成一行,木吉要从其中选出\(2\)批在 ...
- 2019牛客暑期多校训练营(第五场)B:generator 1 (10进制快速幂)
题意:给定x0,x1,a,b,满足xi=a*xi-1+b*xi-2: 求xn,n<10^(10^6): 思路:10进制快速幂裸题.降幂来写好像也是可以的,但是循环节不是phi(mod),所以数学 ...
- RxSwift 在本质上简化了开发异步程序
RxSwift 是一个组合异步和事件驱动编程的库,通过使用可观察序列和功能样式运算符来,从而允许通过调度程序进行参数化执行. RxSwift 在本质上简化了开发异步程序,允许代码对新数据作出反应,并以 ...
- UI系统的分类
1.DSL系统:UI领域特定语言 html markdown; 与平台无关,只与通用UI领域有关: 2.平台语言系统(通用语言系统) UI概念在平台和通用语言中的表示. 一.信息表达: 基本信息:文本 ...
- 【C/C++】static关键字
首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0. static性质 隐藏 当同时编译多个文件时,未加static前缀的全局变量和函数都具有全局 ...