[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
其他
> 详细
UI自动化测试框架之Selenium关键字驱动
时间:
2016-08-08 12:18:40
阅读:
212
评论:
0
收藏:
0
[点我收藏+]
一、原理及特点 1. 关键字驱动测试是数据驱动测试的一种改进类型 2. 主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(value),用面向对象形式可将其表现为Item.Operation(Value) 3. 将测试逻辑按照这些关键字进行分解,形成数据文件。 4. 用关键字的形式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动化 二、准备 使用工具:eclipse 用到的第三方jar包:poi.jar(操作excel);selenium.jar 理解难点:java反射机制;逐步分层 三、框架构思 1、编写脚本 首先我们来写一个登陆开源中国的脚本 public class Login_Script { public static WebDriver driver=null; public static void main(String []agrs) throws InterruptedException{ // 启动火狐浏览器 driver= new FirefoxDriver(); // 最大化 driver.manage().window().maximize(); // 打开开源中国网址 driver.get("http://www.oschina.net/"); // 点击登录 driver.findElement(By.xpath("//*[@id=‘OSC_Userbar‘]/a[1]")).click(); // 输入用户名 driver.findElement(By.xpath("//*[@id=‘f_email‘]")).sendKeys("XXXXXXB"); // 输入密码 driver.findElement(By.xpath("//*[@id=‘f_pwd‘]")).sendKeys("XXXXXXXA"); // 点击登录按钮 // driver.findElement(By.xpath("//*[@id=‘login_osc‘]/table/tbody/tr[7]/td/input")).click(); // Thread.sleep(30); // 点击退出按钮 driver.findElement(By.xpath("//*[@id=‘OSC_Userbar‘]/a[3]")).click(); // 关闭浏览器 driver.quit(); } } 2、脚本分析 这是登陆的场景 操作步骤 第一步:启动浏览器 第二步:输入网址 第四步:点击登录 第五步:输入用户名 第六步:输入密码 第七步:点击登录按钮 第八步:点击退出 第九步:关闭浏览器 3、使用excel 建立一个excel 在java中创建一个操作excel的类 ,主要实现是对excel的读和写,主要代码如下: public class ExcelUtils { public static HSSFSheet ExcelSheet; public static HSSFWorkbook ExcelBook; public static HSSFRow Row; public static HSSFCell Cell; public static void setExcelFile(String Path,String SheetName) throws Exception{ FileInputStream ExcelFile=new FileInputStream(Path); ExcelBook=new HSSFWorkbook(ExcelFile); ExcelSheet=ExcelBook.getSheet(SheetName); } public static void setCellData(String Result, int RowNum, int ColNum,String Path) throws Exception{ Row = ExcelSheet.getRow(RowNum); Cell = Row.getCell(ColNum, Row.RETURN_BLANK_AS_NULL); if (Cell == null) { Cell = Row.createCell(ColNum); Cell.setCellValue(Result); } else { Cell.setCellValue(Result); } FileOutputStream fileOut = new FileOutputStream(Path); ExcelBook.write(fileOut); fileOut.flush(); fileOut.close(); } public static String getCellDate(int RowNum,int CloNum){ Cell=ExcelSheet.getRow(RowNum).getCell(CloNum); String cellData=Cell.getStringCellValue(); return cellData; } } 4、新建一个ActionKeyWords类 public class ActionKeyWords { public static WebDriver driver=null; // 启动浏览器并最大化 public static void OpenBrowser (){ driver= new FirefoxDriver(); driver.manage().window().maximize(); } // 打开开源中国网址 public static void Navigate (){ driver.get("http://www.oschina.net/"); } // 点击登录 public static void Login_Click (){ driver.findElement(By.xpath("//*[@id=‘OSC_Userbar‘]/a[1]")).click(); } // 输入用户名 public static void Input_Name (){ driver.findElement(By.xpath("//*[@id=‘f_email‘]")).sendKeys("XXXXXXA"); } // 输入密码 public static void Input_Password (){ driver.findElement(By.xpath("//*[@id=‘f_pwd‘]")).sendKeys("XXXXXXB"); } // 点击登录按钮 public static void Login_Button (){ driver.findElement(By.xpath("//*[@id=‘login_osc‘]/table/tbody/tr[7]/td/input")).click(); } // 点击退出按钮 public static void Logout_Click (){ driver.findElement(By.xpath("//*[@id=‘OSC_Userbar‘]/a[3]")).click(); } // 关闭浏览器 public static void CloseBrowser (){ driver.quit(); } } 5、修改Login_Script脚本. public class Login_Script { public static void main(String []agrs) throws Exception{ ExcelUtils.setExcelFile("D:\\data\\TestData.xls", "steps"); ActionKeyWords actionKeyWords= new ActionKeyWords(); String Keywords=null; for(int RowNum=1;RowNum<=ExcelUtils.getLastRowNums();RowNum++){ Keywords=ExcelUtils.getCellDate(RowNum, 3); if(Keywords.trim().equals("OpenBrowser")){ actionKeyWords.OpenBrowser(); }else if(Keywords.trim().equals("Navigate")){ actionKeyWords.Navigate(); }else if(Keywords.trim().equals("Login_Click")){ actionKeyWords.Login_Click(); }else if(Keywords.trim().equals("Input_Name")){ actionKeyWords.Input_Name(); }else if(Keywords.trim().equals("Input_Password")){ actionKeyWords.Input_Password(); }else if(Keywords.trim().equals("Login_Button")){ actionKeyWords.Login_Button(); }else if(Keywords.trim().equals("Logout_Click")){ actionKeyWords.Logout_Click(); }else if(Keywords.trim().equals("CloseBrowser")){ actionKeyWords.CloseBrowser(); } } } } 这样代码的框架就基本已经搭建起来了,代码结构如下: 四、结构优化 1、优化Login_Script 类中的代码 注:这里用到了反射机制 public class Login_Script { public static ActionKeyWords actionKeyWords; public static String Keywords=null; public static Method[] method; public Login_Script(){ actionKeyWords= new ActionKeyWords(); method=actionKeyWords.getClass().getMethods(); } public static void main(String []agrs) throws Exception{ ExcelUtils.setExcelFile("D:\\data\\TestData.xls", "steps"); new Login_Script(); for(int RowNum=1;RowNum<=ExcelUtils.getLastRowNums();RowNum++){ Keywords=ExcelUtils.getCellDate(RowNum, 3); login_action(); } } public static void login_action(){ for(int i=0;i
UI自动化测试框架之Selenium关键字驱动
原文:http://www.cnblogs.com/dengnapianhuahai/p/5748542.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!