概述

框架提供了excel数据驱动方式运行测试用例的工具,本文将针对数据驱动,进行详细演示。

详见类:lazy.test.ui.browser.ExcelDataProvider

被测对象:

http://bj.sqyishi.com/user/login.htm

测试场景:

输入用户名,点击登录,校验各种异常输入

输入后,红框里会出现一些异常提示,如图:

bean层代码:

使用插件生成
package test;
import lazy.test.ui.annotations.*;
import lazy.test.ui.beans.PageBean;
import lazy.test.ui.controls.*;
import lazy.test.ui.browser.BrowserEmulator;
public class login extends PageBean {
    @Xpath(xpath={"//input[@id='username']", "//input[@name='username']", "//input[contains(@class,'text highlight1')]"})
    @Frame(frame="")
    @Description(description="username")
    public Text username;
    @Xpath(xpath={"//button[@id='pwdLoginSubmit']", "/html/body/form/div/div[3]/div/div[8]/button"})
    @Frame(frame="")
    @Description(description="pwdLoginSubmit")
    public Click pwdLoginSubmit;
    public login(BrowserEmulator be) { super(be); }
}

page层代码

import lazy.test.ui.browser.BrowserEmulator;
public class LoginRegisterBean {
private BrowserEmulator be;
Login loginBean = new Login(be);
//打开登陆页
public void openLoginURL(){
   be.open("http://bj.sqyishi.com/user/login.htm");
}
//校验是否存在文字
public void expectTextCheck(String expectText){
   be.expectTextExistOrNot(true, expectText, 3500);
}
//手机号输入校验
public void userNameCheck(String telephone, String expectText){
   openLoginURL();
   loginBean.username.input(userName);
   loginBean.pwdLoginSubmit.click();
   expectTextCheck(expectText);
}
}

数据驱动文件

 

1. Excel放在Data文件夹下,即根目录的/data/下面

2. Excel命名方式:测试类名.xls,如图中①

3. Excel的sheet命名方式:测试方法名,如图中②

4. Excel第一行为Map键值,如图中第一行

5. 最后一样必须以“#”号结尾,表示终止,如图中③

6. 可以使用第一列控制其是否运行,如图中④,第六行,不运行

Test层代码

package com.ebl.UIAutomation.test.loginRegister;

import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Map;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import lazy.test.ui.browser.ExcelDataProvider;

public class LoginRegisterParamTest extends loginBaseTest{

   //使用驱动数据运行测试用例
   @Test(dataProvider = "dp" )
   public void UsernameCheck(Map<String,String> data) {
      if(data.get("isRun").equals("1")){//使用第一列控制其是否运行
         loginPage.userNameCheck(data.get("telephone"), data.get("expectText"));
      }
   }
   //根据类名、方法名,加载驱动数据
    @DataProvider(name = "dp")
    public Iterator<Object[]> dataFortestMethod(Method method) throws IOException {
       return new ExcelDataProvider(this.getClass().getName(),method.getName());
    }
}

运行

使用testng运行test:UsernameCheck

便会启动浏览器

打开登录页面

一行为一个case,按excel中顺序,向用户名框中填入telephone列的值,

点击登录,

校验页面上是否出现了expectText列的文字。

Web自动化框架LazyUI使用手册(8)--excel数据驱动详解(ExcelDataProvider)的更多相关文章

  1. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

    概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...

  2. Web自动化框架LazyUI使用手册(2)--先跑起来再说(第一个测试用例-百度搜索)

    作者:cryanimal QQ:164166060 上篇文章中,简要介绍了LazyUI框架,本文便来演示,如何从无到有快速搭建基于lazyUI的工程,并成功运行第一个测试用例. 本文以百度搜索为例,选 ...

  3. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  4. Web自动化框架LazyUI使用手册(5)--模板工程:LazyUI-template详解

    概述: LazyUI-template: 提供Maven管理的,基于Spring+Testng的,包含常用浏览器driver的,方便连接各种数据库的java模板工程,并提供以百度搜索为例的第一个测试用 ...

  5. Web自动化框架LazyUI使用手册(4)--控件抓取工具Elements Extractor详解(批量抓取)

    概述 前面的一篇博文详细介绍了单个控件抓取的设计思路&逻辑以及使用方法,本文将详述批量控件抓取功能. 批量抓取:打开一个web页面,遍历页面上所有能被抓取的元素,获得每个元素的iframe.和 ...

  6. Web自动化框架LazyUI使用手册(7)--浏览器常用操作API

      LazyUI框架中,BrowserEmulator类提供了大量的浏览器操作,常用的API列举如下: 1. 基本操作 /** * Open the URL * 打开一个URL * @param ur ...

  7. Web自动化框架LazyUI使用手册(6)--8种控件对应的class,及可对其进行的操作

    概述: 本文详述8种控件对应的class,及可对其进行的操作 回顾: 回顾一下,下文中的工具设计思路部分: http://blog.csdn.net/kaka1121/article/details/ ...

  8. APP自动化框架LazyAndroid使用手册(2)--元素自动抓取

    作者:黄书力 概述 前面的一篇博文简要介绍了安卓自动化测试框架LazyAndroid的组成结构和基本功能,本文将详细描述此框架中元素自动抓取工具lazy-uiautomaterviewer的使用方法. ...

  9. web自动化框架如何设计

    web自动化框架如何设计po模式总结: 1. 页面对象模型:当页面特别多的时候,代码更好的维护 2. Po是pageObject设计模式,用来管理和维护一组web元素的对象库 3. 每一个page c ...

随机推荐

  1. Java 接口基础详解

    目录 Java接口示例 实现一个接口 接口实例 实现多个接口 方法签名重叠 接口变量 接口方法 接口默认方法 接口与继承 继承与默认方法 接口与多态性 在Java中,接口是一个抽象类型,有点类似于类, ...

  2. 三 Django模型层之Meta

    模型的Meta选项 本文阐述所有可用的元数据选项,你可以在模型的Meta类中设置他们 Meta选项 abstract 如果为True,就表示抽象基类 app_label 如果模型在INSTALLED_ ...

  3. Idea导入多个maven项目到同一目录下

    目标 简单导入多个maven项目进入同一个project(相当于eclipse的workspace) 过程 1.新建一个目录作为仿eclipse的workspace,这里起名为idea-workspa ...

  4. burp的dns记录功能

    写个备忘. 先点copy复制url,然后生成的url就能用了. 一关就没了,比较鸡肋些,不适合持久的,适合马上就能见效果的那种.

  5. [JSOI2007]字符加密

    题目描述 喜欢钻研问题的JS 同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法. 例如‘JSOI07’,可以读作 ...

  6. [HNOI2007]分裂游戏

    Description 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子 ...

  7. 【BZOJ1036】【ZJOI2008】数的统计

    接着找树剖的题...传送门(点我) 题意:给你一棵无根树,有三种操作:查询树上2点路径的点权和/最大点权:更改某点的点权. 解题思路:树链剖分裸题,我采用了常数较小的zkw线段树维护剖下来的树(毕竟线 ...

  8. HDU 5506(GT and set)

    题意: 表示看了很久,然而发现还是没看懂题. 正解:给你a个集合,让你把他们合并成k个,当两个集合有公共数字时可以合并. (一直以为是合并后,每个集合至少有两个数字相同- -,这英语也是醉了) 思路: ...

  9. 《Java技术》第三次作业

    (一)学习总结 1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Gr ...

  10. Mybatis自动生成实体类和实体映射工具

    Mybatis Mysql生成实体类 用到的Lib包: mybatis-generator-core-1.3.2.jarmysql-connector-java-5.1.30.jar 1. 创建一个文 ...