基于Selenium的Web UI自动化实现(java)

本文讲解了如何从 Excel 表格中读取测试用例并在 TestNG 中执行。使用的例子是打开百度首页,输入用户名和密码,完成登录。

Excel 表格中的用例如图
我们将这个 Excel 取名为 test.xls,放在 resource 目录下,注意要将 resource 设为 Source Folder(右键点击文件夹 -> Build Path -> Use as Source Folder),否则文件读取不到

一、实现登录操作

将百度首页(www.baidu.com)定义为 SearchPage,在该类中实现登录操作的代码

public void login(WebDriver driver, Map<String,String> param){//在页面上name为tj_login的元素有两个,所以用findElements,得到List,然后取第二个元素driver.findElements(By.name("tj_login")).get(1).click();//使线程休眠两秒,等待登录页面弹框加载try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//切换到使用账号登录driver.findElement(By.id("TANGRAM__PSP_10__footerULoginBtn")).click();//输入用户名driver.findElement(By.id("TANGRAM__PSP_10__userName")).sendKeys(param.get("用户名"));//输入密码driver.findElement(By.id("TANGRAM__PSP_10__password")).sendKeys(param.get("密码"));//点击登录按钮 driver.findElement(By.id("TANGRAM__PSP_10__submit")).click();
}

其中的 Map 参数 param 就是我们的测试用例。

用例读取后存放的形式如下:

[{“用户名”:“11111”, “密码”:“abcde”}, {“用户名”:“22222”,“密码”:“fghij”}]

其中有两条 map 数据,TestNG 会对它们分别执行

二、读取用例并保存

上面说到,用例是以 Map 形式存储的,具体是怎么实现的呢?
新建 ExcelUtils.java ,处理 Excel 文件并返回用例

public class ExcelUtils {@DataProvider(name="excel")public static Object[][] readFile(){Object[][] obj=null;Map<String,String> map = new HashMap<String,String>();try{//InputStream is = new FileInputStream("D:\\test.xls"); InputStream is = ExcelUtils.class.getResourceAsStream("/test.xls");POIFSFileSystem poi = new POIFSFileSystem(is); HSSFWorkbook wb = new HSSFWorkbook(poi);HSSFSheet sheet = wb.getSheetAt(0);obj = new Object[sheet.getLastRowNum()][];for(int r=1; r <= sheet.getLastRowNum(); r++){HSSFRow row = sheet.getRow(r);map.clear();for(int c=0; c< sheet.getRow(0).getLastCellNum(); c++){Cell cell = row.getCell(c);cell.setCellType(CellType.STRING);map.put(sheet.getRow(0).getCell(c).getStringCellValue(), cell.getStringCellValue());}obj[r-1] = new Object[]{new HashMap<>(map)};}is.close();wb.close();}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}return obj;}
}

代码解释:

1、@DataProvider(name=“excel”)

在使用 TestNG 时,可以设置 DataProvider,指定数据源,这个方法返回的是用例,也就是数据源,所以要在方法前加上@DataProvider(name=“excel”),name 是我们自己定义的名字,也可以不填。

2、Excel 读取的实现

具体说明在这里 Java读写Excel文件

3、TestNG 的数据源是 Object[][] 对象,所以将 Excel 中的每一行都存放到 Map 中,再将 map 放到 Object[][] 中返回。

4、在读取 Excel 的过程中,纯数字文本会被当成 Numeric 类型处理,所以在读取前需要先设置单元格数据类型为 String

cell.setCellType(CellType.STRING);

三、编写测试类

新建 TestLogin.java,实现测试过程

public class TestLogin {//指定数据源,数据源和 Test 方法不在一个类中时,需要说明数据源的 class@Test(dataProvider="excel",dataProviderClass=ExcelUtils.class)public void testLogin(Map<String,String> param){Browser browser = new Browser();Properties properties = Config.getProperties();WebDriver driver = browser.openUrl(properties.getProperty("URL"));SearchPage search = new SearchPage();search.login(driver, param);browser.close();}
}

四、运行 TestNG

右键点击 TestLogin.java,选择Run As -> TestNG Test

执行结果如下:

欢迎关注微信公众号,您的支持是对我最大的鼓励

Web UI自动化之Excel用例读取相关推荐

  1. Web UI自动化框架搭建

    本篇博文只从项目架构角度,提供一些建议供参考.不涉及具体代码编写.目前市场上主流的免费开源工具就是Selenium.大家可以根据自己项目技术栈,选择合适的语言+外加Unit Test框架,来构建自己的 ...

  2. LuckyFrameWeb测试平台(一款支持接口自动化、WEB UI自动化、APP自动化,并且支持分布式测试的全纬度免费开源测试平台)

    官网:luckyframe.cn 源码地址:https://gitee.com/seagull1985/LuckyFrameWeb 分布式测试:使用Web-Client的方式,Web端负责基本信息管理 ...

  3. Web UI自动化录制工具-Selenium IDE

    Web UI自动化录制工具-Selenium IDE 简介 安装 使用 实例 关于Run for pytest... 简介 Selenium IDE可以对网页行为进行录制.回放自动执行测试步骤,最新版 ...

  4. Web UI自动化(selenium+java)

    [郑大钱呀][公][众][号],我们一起交流,一起学习. 文章目录 声明 自动化开发环境搭建 环境准备 浏览器驱动下载 IDEA 创建Maven项目 selenium初探 Selenium元素定位 B ...

  5. python自动化接口测试excel用例串行之行_python 读取 Excel 自动化执行测试用例

    python 读取 Excel 自动化执行测试用例 Excel 测试用例的读取 安装 python 操作Excel 的库 pip install xlrd/xlwt/xlutils (安装三个操作库) ...

  6. 手把手教你从0到1搭建web ui自动化框架(python3+selenium3+pytest)

    -前期准备 -环境 -实战: 从0开始 前期准备 为更好的学习自动化框架搭建,你需要提前了解以下知识: python基础知识 pytest单元测试框架 PO模式 selenium使用 环境 本次我们自 ...

  7. Web UI自动化测试之元素定位

    目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代.让我们看看二者的对比: 接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整 ...

  8. Web UI自动化框架大比拼

    引子 对于测试从业者来说,手工测试是一个绕不过去的坎.当年我校招毕业以测试工程师岗位进了一家互联网公司.入职第一天就被师父"拉去干活",至今印象深刻,是一个投顾管理平台(投资顾问管 ...

  9. Web UI自动化测试之Selenium工具篇

    本文大纲截图: 一.自动化测试介绍 1.基本介绍 1.1 自动化 概念: 由机器设备代替人工自动完成指定目标的过程 优点: 1)减少人工劳动力 2)提高工作效率 3)产品规格统一标准 4)规模化(批量 ...

最新文章

  1. Android RadioButton 修改选择框
  2. 深度学习笔记七:循环神经网络RNN(基本理论)
  3. laravel定时任务
  4. Google回归中国对SEO们意味着什么
  5. linux命令查看cpu负载,怎么使用Linux命令查看CPU使用率
  6. Computer Game
  7. rmmod无法卸载驱动_笔记:linux驱动开发(1、了解内核模块)
  8. java 解析标记语言_Java XML可扩展标记语言(eXtensible Markup Language)
  9. C++中继承和派生详解(公有、私有、保护继承的区别)
  10. excel图表交互联动_Excel图表联动的三种方法
  11. PPT炫酷英文字体设置之Centaur
  12. Pandas基础:列方向分组变形
  13. 【我的OpenGL学习进阶之旅】学习OpenGL ES 3.0 的实战 Awsome Demo (中)
  14. 中国科技论文在线期刊模板出现了格式问题,怎么解决?
  15. DZY Loves Chinese/DZY Loves Chinese II 题解
  16. Eclipse 设置护眼背景色
  17. 计算机组成原理练习题——机器码与加减运算
  18. dellr420部署os_dell r720服务器OS部署
  19. OpenCV4 Viz模块使用学习(二)
  20. 鸿蒙系统入门开发(入门篇)

热门文章

  1. 08 | 在校生简历投递时间节点汇总,错过就真的错过了
  2. bond4 交换机配置_网卡bonding模式 - bond0、1、4配置
  3. Word删除最后一页空白页
  4. 基于OpenCV对图片清晰度、色偏和亮度的检测(java版)
  5. Java安装教程:如何安装java环境?
  6. 华为p60pro和p60art区别 华为p60pro和p60art对比
  7. 手游幻想神域服务器显示,幻想神域手游最详细攻略介绍
  8. linux 常用命令汇总(面向面试)
  9. android togglebutton 自定义,Android 自定义ToggleButton
  10. Mysql--性能优化