一、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完整版)的更多相关文章

  1. WEB学习路线2019完整版(附视频教程+网盘下载地址)

    WEB学习路线2019完整版(附视频教程+网盘下载地址).适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利.高薪水的职业了.所以现在学习web前端开发的技术人员也是 ...

  2. Ubuntu+Apache+PHP+Mysql环境搭建(完整版)

    Ubuntu+Apache+PHP+Mysql环境搭建(完整版) 一.操作系统Ubuntu 14.04 64位,阿里云服务器 二.Apache 1.安装Apache,安装命令:sudo apt-get ...

  3. Ubuntu+Apache+PHP+Mysql环境搭建(完整版)(转)

    http://www.2cto.com/os/201505/401588.html Ubuntu+Apache+PHP+Mysql环境搭建(完整版) 一.操作系统Ubuntu 14.04 64位,阿里 ...

  4. selenium+testN自动化测试框架搭建

    自动化测试框架搭建 1 Java环境的搭建 1.1访问oracle的官网下载最新版本的jdk http://www.oracle.com/technetwork/java/javase/downloa ...

  5. 行为驱动:Cucumber + Selenium + Java(一) - 环境搭建

    1.1 什么是行为驱动测试 说起行为驱动,相信很多人听说过. 行为驱动开发-BDD(Behavior Driven Development)是一个诞生于2003年的软件开发理念.其关键思想在于通过与利 ...

  6. selenium+testNG自动化测试框架搭建

    自动化测试框架搭建 1 Java环境的搭建 1.1访问oracle的官网下载最新版本的jdk http://www.oracle.com/technetwork/java/javase/downloa ...

  7. Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性

    在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; ...

  8. Unity 游戏框架搭建 2019 (三十二、三十三) 类的命名 & 代码文件命名

    昨天我们完成了第八个示例的第二个 MenuItem 菜单顺序的调整. 我们今天再往下接着调整. 我们来看下接下来的 MenuItem 代码如下: [MenuItem("QFramework/ ...

  9. Unity 游戏框架搭建 2019 (五十六/五十七) 需求分析-架构中最重要的一环&从 EmptyGO 到 Manager Of Managers

    我们的项目开始立项的时候,最常见的一个情况就是:几个人的小团队,一开始什么也不做,就开始写代码,验证逻辑,游戏就开始写起来了.而公司的一些所谓的领导层面一开始就把游戏定义为我们要做一个大作.这个事情本 ...

随机推荐

  1. Prometheus学习笔记(7)PromQL玩法入门

    目录 1.什么是PromQL??? 2.如何查询??? 1.什么是PromQL??? PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持. ...

  2. SQL注入(2)

    SQL注入id  title  content  time  author select * from news where id = 1; select 1,2,3,4,5,6 from table ...

  3. Httpd服务进阶知识-调用操作系统的Sendfile机制

    Httpd服务进阶知识-调用操作系统的Sendfile机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.不用 sendfile 的传统网络传输过程 read(file, tm ...

  4. Kali 安装tightvncserver

    一.软件说明 a) tightvncserver是一个轻量级,只能建立桌面,不能查看TTY7/TTY1正在显示的桌面,但x11 vnc可以,相比x11vnc 安全传输差一些.反之,x11 vnc:安全 ...

  5. Reset.css和Normalize.css样式表初始化相关

    (1)Reset.css 简介:在HTML标签在浏览器里有默认的样式,例如 p 标签有上下边距,strong标签有字体加粗样式,em标签有字体倾斜样式.不同浏览器的默认样式之间也会有差别,例如ul默认 ...

  6. php怎么实现多态?

    在PHP5中,变量的类型是不确定的,一个变量可以指向任何类型的数值.字符串.对象.资源等.我们无法说PHP5中多态的是变量. 我们只能说在PHP5中,多态应用在方法参数的类型提示位置. 一个类的任何子 ...

  7. python基础语法1 用户交互,基本数据类型,格式化输出,运算符

    与用户交互: 输入: python2: input一定要声明你输入的类型 >>> input(">>:") >>:sean Traceba ...

  8. 如何将wordpress的the_title()进行大小写处理

    有时我们在做wordpress网站时需要将标题的大写字母改成小写字母或小写字母转为大写字母方便调用,那么要如何改造呢?我们知道Wordpress the_title()函数默认回显标题,标准写法是&l ...

  9. swift的类型系统

    顶级抽象:protocol 具体类型:值类型.引用类型 类型操作:扩展 其他: 范型.函数式类型:function.monand

  10. 用插件maven-surefire-report-plugin生成html格式测试报告

    在默认情况下,执行maven test/maven package/maven install命令时会在target/surefire-reports目录下生成txt和xml格式的输出信息. 其实ma ...