简介

这是一个AppUi自动化测试框架,该APP自动化测试框架是用java语言编写的,基于selenium webdriver Appium的开源自动化测试框架,该框架结合了testng,selenium,webdriver,Appium,jxl,jodd-http 等工具。该框架基于页面对象模型(POM)架构,实现了关键字驱动技术,数据驱动,无需掌握多少编程知识即可编写脚本,同时实现了数据与代码分离的功能:1、元素定位信息保存在对象库文件中 2、测试用例数据可以存储在excel中。从而实现,页面元素位置变化,无需改动脚本,只需修改对应的元素定位信息即可。

该框架实现了检查点及用例失败自动截图功能,自动生成html测试报告及自动发送html邮件测试报告功能。学习该框架需要熟悉一定的安卓APP 和java基础,后续可以考虑自动编码的实现

主要功能

1、实现关键字驱动技术,编写用例简单

2、实现数据驱动技术,减少用例代码

3、支持元素对象库管理,页面元素信息与代码分离

3、支持检查点、用例断言设置

4、检查点失败截图,一个检查点失败不影响用例后续执行

5、用例失败自动截图

6、用例之间依赖少,可以自由组合测试用例执行

7、支持安卓系统常用触摸操作

8、支持APP控件常用操作

9、用例集执行完毕自动生成简介美观的html报告

10、用例执行完毕自动发送详实的html邮件报告,可拓展为有失败用例才发送。

Api文档

点击查看API文档

环境配置

1、JDK1.8

2、IDEAEclipse

3、Android SDK 具体安装参考:http://www.webdriver.org/article-52-1.html

4、Maven

5、一台安卓手机或者安卓模拟器,推荐夜神安卓模拟器,下载地址:http://www.yeshen.com/

6、Appium Server端,下载地址:http://pan.baidu.com/s/1jIxzSfO

注意事项

工程项目编码需要设置成UTF-8否则会出现中文乱码情况

一、创建对象库

1、通过Android SDK工具 uiautomatorviewer.bat 获取app元素定位信息,具体使用参考:http://www.webdriver.org/article-53-1.html

2、UILibrary.xml 对象库文件编写

登录

注册

使用其他方式登录

账号输入框

密码输入框

登录按钮

登录失败提示信息

登录失败确认按钮

编写完后,运行/src/main/java/org/webdriver/patatiumappui/PageObjectConfig/PageObjectAutoCode.java 文件生成对象库java代码

二、公共action封装实例(业务操作)

/**
 * Created by zhengshuheng on 2016/9/2 0002.
 */
public class LoginAction extends TestBaseCase {
public LoginAction(String username,String password) throws IOException {
 ElementAction action=new ElementAction();
 LoginPage loginPage=new LoginPage();
 action.click(loginPage.账号输入框());
 action.clear(loginPage.账号输入框());
 action.type(loginPage.账号输入框(),username);
 action.click(loginPage.密码输入框());
 action.clear(loginPage.密码输入框());
 action.type(loginPage.密码输入框(),password);
 action.sleep(1);
 action.click(loginPage.登录按钮());
}
}

三、驱动数据来源实例

在src/main/resources/data下创建loginData.xls文件




Java UI grid自动化 java ui自动化测试框架_用例


四、测试用例编写

public class LoginTest extends TestBaseCase {
 ElementAction action=new ElementAction();
@BeforeClass
public void beforeclass() throws IOException {
 StartPage startPage=new StartPage();
 action.click(startPage.登录());
 LoginPage loginPage=new LoginPage();
 action.sleep(2);
 action.click(loginPage.使用其他方式登录());
 action.sleep(2);
}
@Test(description = "登录测试")
public void login() throws IOException {
//调用登录方法(需填写正确的用户名和密码)
new LoginAction("655433", "gg");
 action.sleep(5);
//设置检查点
 Assertion.VerityTextPresent("通讯录","验证是否登录成功!");
//设置断言 。判断用例是否失败
 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, 2, 1, 3,filePath);
}
@Test(description="登录失败用例:数据驱动例子",dataProvider = "longinData")
public void loginFail (String userName,String password,String message) throws IOException, DocumentException {
//调用登录方法
new LoginAction(userName,password);
 LoginPage loginPage=new LoginPage();
 action.sleep(4);
 log.info("登录失败信息:"+action.getText(loginPage.登录失败提示信息()));
 Assertion.VerityCationString(action.getText(loginPage.登录失败提示信息()),message,"验证是否出现预期的错误提示信息:"+message);
 action.click(loginPage.登录失败确认按钮());
//设置断言
 Assertion.VerityError();
}
}

五、Testng.xml配置

tesng.xml需配置app主包名,主类名,SDK版本,Device Name等信息

Device Name:在cmd命令下通过adb devices 获取


Java UI grid自动化 java ui自动化测试框架_测试报告_02


App 主包名,主类名等在Appium Server GUI 获取


Java UI grid自动化 java ui自动化测试框架_用例_03


App安装包apk文件放在项目根目录下apps目录里,tesng.xml需指定运行apk文件名

class-name="org.webdriver.patatiumappui.utils.TestListener"/>
class-name="org.webdriver.patatiumappui.utils.TestReport"/>
<class name="LoginTest">
class>
<class name="LoginTest">
class>

六、执行用例

IDE:在IDE集成开发环境下右键testng.xml使用testng运行

Maven:执行mvn clean ;mvn test 命令

Jenkins:1、checkout 项目代码 2、指定pom.xml文件 3、执行mvn clean ;mvn test 命令

七、查看测试报告及日志文件

用例执行完毕,会自动发送邮件报告及生成测试报告文件;用例失败会自动截图并将其展示在报告中,也可以将用例失败堆栈信息显示到报表中

测试报告文件生成在项目根目录下test-out目录下report.html文件

报告展示如下:


Java UI grid自动化 java ui自动化测试框架_测试报告_04


Java UI grid自动化 java ui自动化测试框架_测试报告_05


Java UI grid自动化 java ui自动化测试框架_Java UI grid自动化_06


Java UI grid自动化 java ui自动化测试框架_Java UI grid自动化_07