# PatatiumWebUi
**Repository Path**: tiger.study/PatatiumWebUi
## Basic Information
- **Project Name**: PatatiumWebUi
- **Description**: 基于selenium webdriver 自动化测试框架
- **Primary Language**: Java
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 157
- **Created**: 2018-05-24
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#PatatiumWebUi
### 简介
**这是一个WebUI自动化测试框架,由webdriver中文社区创办人土豆(本人技术笔名)所创建,该web自动化测试框架是用java语言编写的,基于selenium webdriver 的开源自动化测试框架,该框架结合了testng,selenium,webdriver,jxl,jodd-http 等工具。该框架基于页面对象模型(POM)架构,实现了关键字驱动技术,数据驱动,无需掌握多少编程知识即可编写脚本,同时实现了数据与代码分离的功能:1、元素定位信息保存在对象库文件中 2、测试用例数据可以存储在excel中。从而实现,页面元素位置变化,无需改动脚本,只需修改对应的元素定位信息即可。
该框架实现了检查点及用例失败自动截图功能,自动生成html测试报告及自动发送html邮件测试报告功能。
目前框架还不是特别完善,还需要写一些脚本实现自动化;学习该框架需要熟悉一定的HTML 和java基础,后续可以考虑自动编码的实现。**
### 环境配置
1、jdk 1.8
2、idea/eclipse
3、maven
### 注意事项
工程项目编码需要设置为UTF-8否则会出现中文乱码情况
### API文档
点击查看API文档
### 实现的功能
1、XML管理元素对象信息
2、统一的操作API风格,action.操作(某个页面.某个元素())
3、数据驱动
4、关键字驱动
5、用例失败自动截图并展示到报表中
6、自动生成html报表,自动发送html邮件报告
7、用例串行一次性执行多个浏览器,可用于兼容性测试
### Demo演示
### 1、对象库文件编写(文件名定义为UILibrary.xml)
```
```
对象库文件编写后,运行/src/main/java/org/webdriver/patatiumwebui/PageObjectConfig/PageObjectAutoCode.java 文件生成对象库java代码
### 2、公共action封装实例(业务操作)
```
package org.webdriver.patatiumwebui.action;
import org.webdriver.patatiumwebui.pageObject.LoginPage;
import org.webdriver.patatiumwebui.utils.ElementAction;
import org.webdriver.patatiumwebui.utils.TestBaseCase;
import java.io.IOException;
/**
* Created by zhengshuheng on 2016/8/29 0029.
*/
public class LoginAction extends TestBaseCase{
public LoginAction(String Url,String UserName,String PassWord) throws IOException
{
//此driver变量继承自TestBase变量
LoginPage loginPage=new LoginPage();
loginPage.open(Url);
System.out.println(driver.getCurrentUrl());
ElementAction action=new ElementAction();
action.clear(loginPage.密码输入框());
action.type(loginPage.用户名输入框(),UserName);
action.clear(loginPage.密码输入框());
action.type(loginPage.密码输入框(),PassWord);
action.click(loginPage.登录按钮());
}
}
```
公共Action代码放在src/main/java/org/webdriver/patatiumwebui/Action 包下
### 3、驱动数据来源实例
1、在src/main/resources/data下创建loginData.xls文件
编写如下内容

### 4、测试用例编写
普通测试用例:
```
@Test(description="登录成功测试")
@Parameters({"BaseUrl"})//读取testng.xml参数
public void login(String BaseUrl) throws IOException
{
//调用登录方法,需输入正确的用户名和密码
LoginAction loginAction=new LoginAction(BaseUrl+"/new/login.aspx","11111","abc123");
action.sleep(2);
//设置检查点
Assertion.VerityTextPresentPrecision("jd_1111","输入正确的用户名和密码,验证是否成功进入主页");
//设置用例断言,判断用例是否失败
Assertion.VerityError();
}
```
数据驱动测试用例:
```
//数据驱动案例--start
@DataProvider(name="longinData")
public Object[][] loginData()
{
//读取登录用例测试数据
String filePath="src/main/resources/data/loginData.xls";
//读取第一个sheet,第2行到第5行-第2到第4列之间的数据
return ExcelReadUtil.case_data_excel(0, 1, 4, 1, 3,filePath);
}
@Test(description="登录失败用例",dataProvider = "longinData")
public void loginFail (String userName,String password,String message) throws IOException, DocumentException {
//代替testng参数化的方法
String BaseUrl= XmlReadUtil.getTestngParametersValue("testng.xml","BaseUrl");
//调用登录方法
LoginAction loginAction=new LoginAction(BaseUrl+"/new/login.aspx",userName,password);
action.sleep(1);
//设置检查点
Assertion.VerityTextPresent(message,"验证是否出现预期的错误提示信息:"+message);
//设置断言
Assertion.VerityError();
}
//数据驱动案例--end
```
测试用例代码放在src/test/java 包下
### 5、testng.xml配置
普通串行执行配置(只用一个浏览器跑用例)
```
名字 | 金额 | 方式 | 说明 |
月波 | 8.8 | 支付宝 | 郑工,希望你空闲时间多发表自动化测试的文章 |
Jeff | 66.66 | 微信 | 支持你!好榜样! |
boby | 18.80 | 微信 | 加油,你的框架不错 |
Joyce | 10.24 | 微信 | 支持你一下 |