6.1  自动化测试模型介绍

6.1.1  线性测试 :其实就是单纯地来模拟用户完整的操作场景。

优势就是每一个脚本都是完整且独立的;

       缺陷测试用例的开发与维护成本很高。

6.1.2  模块化驱动测试 :编程语言中模块化的思想,把重复的操作独立成公共模块,当用例执行过程中需要用到这一模块操作时则被调用,这样就最大程度上消除了重复,从而提高测试用例的可维护性。

6.1.3  数据驱动测试 :数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.(我们读取的是定义的数组、字典,或者是外部文件(excel、csv、txt、xml等)都可以看作是数据驱动。)

6.1.4  关键字驱动测试:

6.2  模块化实例

线性测试实例:

package com.cy;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class TestModel { public static void main(String[] args) throws InterruptedException {
System.out.println("博客园登录 操作 退出");
WebDriver driver =new FirefoxDriver();
driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1"); // 清除input 输入用户名
driver.findElement(By.id("input1")).clear();
driver.findElement(By.id("input1")).sendKeys("Smile燕");
// 清除input 输入密码
driver.findElement(By.id("input2")).clear();
driver.findElement(By.id("input2")).sendKeys("acy123"); // 点击登录
driver.findElement(By.id("signin")).click(); Thread.sleep(5000); /**
* 操作
*/ // 退出
driver.findElement(By.linkText("退出")).click();
Thread.sleep(5000);
// // 接受弹框
driver.switchTo().alert().accept();
Thread.sleep(5000);
// 关闭浏览器
driver.quit();
} }

模块化驱动测试实例: 把登录和退出进行封装。

package com.cy;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class TestModel { public static void main(String[] args) throws InterruptedException {
System.out.println("博客园登录 操作 退出");
WebDriver driver =new FirefoxDriver();
/**
* 操作
*/
login(driver);
Thread.sleep(5000);
logout(driver);
Thread.sleep(5000);
// 关闭浏览器
driver.quit(); } public static void login(WebDriver driver) {
driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1"); // 清除input 输入用户名
driver.findElement(By.id("input1")).clear();
driver.findElement(By.id("input1")).sendKeys("Smile燕");
// 清除input 输入密码
driver.findElement(By.id("input2")).clear();
driver.findElement(By.id("input2")).sendKeys("acy123"); // 点击登录
driver.findElement(By.id("signin")).click(); } public static void logout(WebDriver driver){
// 退出
driver.findElement(By.linkText("退出")).click(); // // 接受弹框
driver.switchTo().alert().accept(); } }

我们可以把这两个方法 封装成单独的文件中供其它用例调用。这样对于每个用例来说就简便了许多,也更易于维护。

数据驱动实例:前面提到关于数据驱动的形式有很多,我们既可以通过定义变量的方式进行参数化,也可以通过定义数组、字典的方式进行参数化,还可以通过读取文件(txt\csv\xml)的方式进行参数化。

package com.cy;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class TestModel { public static void main(String[] args) throws InterruptedException {
System.out.println("博客园登录 操作 退出");
WebDriver driver =new FirefoxDriver();
/**
* 操作
*/
String username="Smile燕";
String password="acy123@@";
login(driver,username,password);
Thread.sleep(5000);
logout(driver);
Thread.sleep(5000);
// 关闭浏览器
driver.quit(); } public static void login(WebDriver driver,String username,String password) {
driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1"); // 清除input 输入用户名
driver.findElement(By.id("input1")).clear();
driver.findElement(By.id("input1")).sendKeys(username);
// 清除input 输入密码
driver.findElement(By.id("input2")).clear();
driver.findElement(By.id("input2")).sendKeys(password); // 点击登录
driver.findElement(By.id("signin")).click(); } public static void logout(WebDriver driver){
// 退出
driver.findElement(By.linkText("退出")).click(); // // 接受弹框
driver.switchTo().alert().accept(); } }

关键字驱动测试实例:(未完待续哈。。。)

第6章 Selenium2-Java 自动化测试模型的更多相关文章

  1. 《selenium2 Java 自动化测试实战(第二版)》 更新2016.5.3

    java 版来了!! 本文档在<selenium2 Python 自动化测试实战>的基础上,将代码与实例替换为java ,当然,部分章节有变更.这主要更语言本身的特点有关.集合和java下 ...

  2. 《深入理解Java虚拟机》笔记--第十二章、Java内存模型与线程

    主要内容:虚拟机如何实现多线程.多线程之间由于共享和竞争数据而导致的一系列问题及解决方案. Java内存模型:     Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储 ...

  3. web自动化测试 Selenium2 Java自动化测试实战9_3

    driver.findElement(By.id("idInput")).sendKeys("哈哈"); driver.findElement(By.id(&q ...

  4. (第三章)Java内存模型(下)

    一.happens-before happens-before是JMM最核心的概念.对于Java程序员来说,理解happens-before是理解JMM的关键. 1.1 JMM的设计 从JMM设计者的 ...

  5. JMM(java内存模型)

    What is a memory model, anyway? In multiprocessorsystems, processors generally have one or more laye ...

  6. JSR133提案-修复Java内存模型

    目录 1. 什么是内存模型? 2. JSR 133是关于什么的? 3. 再谈指令重排序 4.同步都做了什么? 5. final字段在旧的内存模型中为什么可以改变? 6."初始化安全" ...

  7. 从JVM设计角度解读Java内存模型

    第十六章:Java内存模型 本文我们将重点放在Java内存模型(JMM)的一些高层设计问题,以及JMM的底层需求和所提供的保证,还有一些高层设计原则背后的原理. 例如安全发布,同步策略的规范以及一致性 ...

  8. selenium2 Webdriver + Java 自动化测试实战和完全教程

    selenium2 Webdriver + Java 自动化测试实战和完全教程一.快速开始 博客分类: Selenium-webdriverselenium webdriver 学习selenium ...

  9. (第三章)Java内存模型(上)

    一.java内存模型的基础 1.1 并发编程模型的两个关键问题 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来 ...

  10. 深入理解java虚拟机-第12章Java内存模型与线程

    第12章 Java内存模型与线程 Java内存模型  主内存与工作内存: java内存模型规定了所有的变量都在主内存中,每条线程还有自己的工作内存. 工作内存中保存了该线程使用的主内存副本拷贝,线程对 ...

随机推荐

  1. 《Linux就该这么学》第三天课程

    秦时明月经典语录: 王道: 千里挥戈,万众俯首.四海江湖,百世王道.——项羽 今天主要介绍了常用系统工作的命令 如需进一步了解,请前往https://www.linuxcool.com(附带配音) r ...

  2. Linux 第四天

    1.文件搜索命令 1)locate 在文件资料库中查找文件(需要文件资料库中有,新建的文件查不到,需要手动更新,updatedb.查不到/tmp目录下的文件) 语法:locate 文件名 常用选项: ...

  3. ABP框架系列之二十七:(Feature-Management-特征管理)

    Introduction Most SaaS (multi-tenant) applications have editions (packages) those have different fea ...

  4. python模块:xml.etree.ElementTree

    """Lightweight XML support for Python. XML is an inherently hierarchical data format, ...

  5. 小程序页面传值e.currentTarget

    将页面确定上的数值5传到js 微信官网 wtml: <view class="distpicker-btn"> <view class="distpic ...

  6. Javascript上传超大文件实例

    因业务需求需要向伺服器上传大于1GB以上的视频文件,其实网上也能找到很多大文件上传的第三方组件,问题是要么用起来相当不方便,总出现一些bug,要么收费太贵(费用几千,甚至还限定使用数量),最终自己开发 ...

  7. 利用python同步windows和linux文件

    写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,然后再利用网络copy,重复性很大,就想着能不能写一个小脚本帮我同步 逻辑:比对本地和服务器文件的 ...

  8. 【jenkins 忘记密码】忘记Jenkins管理员密码的解决办法

    一.admin密码未更改情况 1.进入\Jenkins\secrets目录,打开initialAdminPassword文件,复制密码: 2.访问Jenkins页面,输入管理员admin,及刚才的密码 ...

  9. Presto + Superset 数据仓库及BI

    基于Presto和superset搭建数据分析平台. Presto可以作为数据仓库,能够连接多种数据库和NoSql,同时查询性能很高: Superset提供了Presto连接,方便数据可视化和dash ...

  10. 人工智能必须要知道的语义分割模型:DeepLabv3+

    图像分割是计算机视觉中除了分类和检测外的另一项基本任务,它意味着要将图片根据内容分割成不同的块.相比图像分类和检测,分割是一项更精细的工作,因为需要对每个像素点分类,如下图的街景分割,由于对每个像素点 ...