UiAutomator 相关 Java 知识(上)
2016-09-29 16:41
441 查看
概要
—封装方法与模块化用例
—基本数据类型与流程控制
—数组与集合
1.封装方法与模块化用例
—什么方法(图片)
—模块化用例(图片)
—代码演示
公共类代码部分
实际用例调用与执行部分代码
2.Java 基本数据类型与流程控制
—java 数据类型的划分(图片)
—java 流程控制(图片)
演示代码
目标任务:
—操作数 — 随机生成一个0-100的整数
—操作符 — 加减乘除
—被操作数 — 随机生成一个0-100的整数
—验证结果 — 获取计算器计算结果和电脑计算结果比对
公共方法
实际用例调用的方法与执行部分代码
3.数组与集合
—数组(图片)
—集合(图片)
演示代码
—封装方法与模块化用例
—基本数据类型与流程控制
—数组与集合
1.封装方法与模块化用例
—什么方法(图片)
—模块化用例(图片)
—代码演示
公共类代码部分
package com.UiAutomator_about_java; import android.view.KeyEvent; import android.widget.TextView; import com.android.uiautomator.core.UiDevice; import com.android.uiautomator.core.UiObject; import com.android.uiautomator.core.UiObjectNotFoundException; import com.android.uiautomator.core.UiSelector; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class BaseClass extends UiAutomatorTestCase{ /*开启app * */ public void lauchAPP() throws UiObjectNotFoundException{ //初始化用例场景 exitAPP(); //获取需要点击的对象 getObjectByText("电话").clickAndWaitForNewWindow(); } //退出应用 public void exitAPP(){ //按三次back键 pressKeyCode(KeyEvent.KEYCODE_BACK,3); //按一次home键 pressKeyCode(KeyEvent.KEYCODE_HOME, 1); } //打开拨号盘 public void openDial() throws UiObjectNotFoundException{ //点击对象 getObjectByDesc("拨号键盘").click(); } //输入电话号码 public void inputPhonenum(String num) throws UiObjectNotFoundException{ //使用正则API验证输入的是否是纯数字 if(num.matches("\\d+")){ for(int i =0;i<num.length();i++){ getObjectByTextClass(num.charAt(i)+"",TextView.class.getName()) .click(); //延时 sleep(100); } }else{ fail("input num err!"); } } //按拨号键 打电话 public void pressDial() throws UiObjectNotFoundException{ getObjectByDesc("拨打").click(); } //挂断电话 public void hanUp(){ getObjectByDesc("结束通话"); } //通过text获取对象 public UiObject getObjectByText(String text){ return new UiObject(new UiSelector().text(text)); } //通过desc(描述)获取对象 public UiObject getObjectByDesc(String desc){ return new UiObject(new UiSelector().description(desc)); } //通过className 和 text 双层验证获取对象, public UiObject getObjectByTextClass(String text,String className){ return new UiObject(new UiSelector().text(text).className(className)); } //通过className获取对象的方法 public UiObject getObjectByClassNmae(String classname){ return new UiObject(new UiSelector().className(classname)); } //通过resource-id 获取对象 public UiObject getObjectByResourceId(String resourceid){ return new UiObject(new UiSelector().resourceId(resourceid)); } /*按键方法 * keyCode 键值 * time 按几次 * */ public void pressKeyCode(int keyCode,int time){ for(int i = 0;i<time;i++){ UiDevice.getInstance().pressKeyCode(keyCode); } } }
实际用例调用与执行部分代码
//开启(计划) @Override protected void setUp() throws Exception { // TODO Auto-generated method stub super.setUp(); //lauchAPP();//开启应用 } //测试用例 public void testlauchAPP() throws UiObjectNotFoundException{ openDial();//打开拨号盘 inputPhonenum("112");//拨打电话 pressDial(); sleep(2000);//通话时间 hanUp();//挂断电话 } //销毁(任务) @Override protected void tearDown() throws Exception { // TODO Auto-generated method stub super.tearDown(); exitAPP();//退出应用 }
2.Java 基本数据类型与流程控制
—java 数据类型的划分(图片)
—java 流程控制(图片)
演示代码
目标任务:
—操作数 — 随机生成一个0-100的整数
—操作符 — 加减乘除
—被操作数 — 随机生成一个0-100的整数
—验证结果 — 获取计算器计算结果和电脑计算结果比对
公共方法
//开启APP public void launchAPP() throws UiObjectNotFoundException{ exitAPP(); getObjectByDesc("应用").clickAndWaitForNewWindow(); getObjectByText("计算器").clickAndWaitForNewWindow(); getObjectByClassNmae(TextView.class.getName()).clearTextField(); } //随机产生一个0-100的整数 public double randomInputData() throws UiObjectNotFoundException{ //为了方便,排除0的情况 int num = 0; while(num == 0){ num = new Random().nextInt(100);//随机产生0-100的整数 } String s = num+"";//int 转 String //按键 for(int i =0; i<s.length();i++){ //拆分字符串,实现按键 pressKeyboard(s.charAt(i)+"");//点击拆分后的字符串 } return Double.valueOf(num);//转换成double类型 } //按键方法 public void pressKeyboard(String text) throws UiObjectNotFoundException{ getObjectByTextClass(text, Button.class.getName()).click();//点击对象 } //获取随机操作符 public int getRandomOperation() throws UiObjectNotFoundException{ int num = new Random().nextInt(1000); if(num<250){ pressKeyboard("+"); return 1; }else if(num>=250 && num<500){ pressKeyboard("−"); return 2; }else if(num>=500 && num<750){ pressKeyboard("×"); return 3; }else{ pressKeyboard("÷"); return 4; } } //获取期望值 public double calculator(double one,int operation,double two){ switch(operation){ case 1: return one+two; case 2: return one-two; case 3: return one*two; case 4: return one/two; default: break; } return -100000; } //获取实际值 public double getActual() throws UiObjectNotFoundException{ String text = getObjectByResourceId("com.android.calculator2:id/formula").getText(); /* * 减63 0点66666 * 有的时候txt的值出现汉字需要转换 * contains(包含) * replace(替换) * */ if(text.contains("减")){ text = text.replace("减","-"); } if(text.contains("点")){ text = text.replace("点", "."); } return Double.valueOf(text); }
实际用例调用的方法与执行部分代码
public void testRandom() throws UiObjectNotFoundException{ double one = randomInputData(); //随机数方法1 //operation(操作) 这里指带操作符(加减乘除) int operation = getRandomOperation();//获取随机操作符 double two = randomInputData(); //随机数方法2 //keyboard(按键盘) pressKeyboard("="); //按键 //expected(期望的) calculator(计算器) double expected = calculator(one,operation,two); //期望值 //验证 actual(实际的) assertEquals(expected,getActual(), 0.1);//期望值与实际值对比 }
3.数组与集合
—数组(图片)
—集合(图片)
演示代码
/* * 获取文件管理器list count * */ public void testListCount() throws UiObjectNotFoundException{ int count =getListCount(); System.out.println("count"+count); } public int getListCount() throws UiObjectNotFoundException{ HashSet<String> filename = new HashSet<String>();//创建HashSet集合对象 UiScrollable list = getScrollObjectByClass(ListView.class.getName()); //获取父级对象 UiSelector content = new UiSelector().className(LinearLayout.class.getName()); list.scrollToBeginning(5);//滚动到某个对象 设置步长为5 //设置标识 boolean flag = false; while(flag){ int count =list.getChildCount(content); //获取子类数量 //根据子类的数量执行觉得循环多少次 for(int i =0;i<count;i++){ //通过 子类获取到子类的后代类 获取他的text内容 String name = list.getChildByInstance(content, i) .getChild(new UiSelector().className(TextView.class.getName())) .getText(); filename.add(name); //有就会添加没有,就不会添加 } if(flag){ break; } if(!list.scrollForward(80)){//向前滚动 步长80, 滚动大概半页多一 flag = true; } } return -1; }
相关文章推荐
- 十八、UiAutomator 相关JAVA知识
- 三、Android UiAutomator 相关JAVA知识
- UiAutomator 相关 Java 知识(下)
- JAVA相关基础知识(一)
- JAVA相关基础知识---2
- JAVA相关基础知识(4)
- JAVA相关基础知识(5)
- JAVA相关基础知识
- JAVA相关基础知识
- JAVA相关基础知识(转载)
- JAVA相关基础知识---1
- JAVA相关基础知识
- JAVA相关基础知识(1)
- JAVA相关基础知识
- JAVA相关基础知识
- JAVA相关基础知识
- JAVA相关基础知识 选择自fanlitcn 的Blog
- JAVA相关基础知识_mxf
- JAVA相关基础知识(7)
- JAVA相关基础知识