在我们测试压力中肯定有这么些用例,就是让你打开xxx开关,判断开关开启成功,该如何去判断呢!
我们就举wifi开关为例,这里不考虑wifi打开后连接wifi然后能上网一系列动作我们暂不考虑,只开了打开和关闭开关这个动作,打开时是否打开成功,关闭时是否关闭成功;
第一步,打开开关这个动作我相信每个人都会,但是我们要思考如何并且判断打开开关成功,自动化开发就难倒在如何去判断和定位问题,我们打开开关肉眼可以看出就可以看,但是代码怎么去判断,代码实现肯定是:打开-关闭-打开-再关闭-再打开····这样的循环操作,也就是说,我第1次是打开,那第2次是关闭,第3次是打开,第4次是关闭····这规律就出来了,奇数是打开的意思,偶数是关闭的意思;我们第1次(奇数)打开开关的时候,使用uiautomator view工具查看test内容显示是否是关闭,反之,偶数是关闭时判断test文本是否显示是打开。只要用奇偶数去判断test文本内容,我们就可以进行判断,
因为我是根据奇偶数去判断状态的方法,所以开始测试前要确保开关是保证关闭状态的,要是为打开状态,记录的结果肯定是错误,当然还有其他的办法,我这种办法属于简单粗暴,简单易懂。仅供参考;
直接上代码:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;
import android.R.string;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core.UiSelector;
import dengshengyu.Util.FileUtil;
/*
* 项目名称:PublicPressureScript
* 类名称:WifiOnAndOff
* 类描述:连续打开、关闭WiFi开关
* 创建人:享有盛誉之名
* 创建时间:2017年8月15日 上午14:28
* 备注:wifi开关初始状态要默认关闭,终端为开机状态;
* @版本v0.0.1
*
* */
public class WifiOnAndOff extends UiAutomatorTestCase{
public void testWifi() throws Exception {
int i=0;
int count = 1 ;
int count1 = 1 ;
int count2 = 1 ;
int count3 = 1 ;
//home键返回主界面
getUiDevice().pressHome();
// 进入设置菜单
Runtime.getRuntime().exec("am start com.android.settings");
sleep(3000);
// 首次开关默认为关;循环点击开关50次
for(;i<50;i++){
// getUiDevice().click(574,306);
UiObject clickOnAndOff = new UiObject(new UiSelector().resourceId("com.android.settings:id/switchWidget"));
clickOnAndOff.click();
sleep(2000);
//判断开关是否正确;
UiObject onOff = new UiObject(new UiSelector().resourceId("com.android.settings:id/switchWidget"));//开关控件
Runtime.getRuntime().exec("mkdir sdcard/dengshengyu"); // 在手机创建文件夹
Runtime.getRuntime().exec("mkdir sdcard/dengshengyu/wifi"); // 在手机创建文件夹
if(i%2==0){//偶数是为开
if(onOff.getText().equals("开启")){//开启成功
FileUtil.out("/sdcard/dengshengyu/wifi/Wifi开启成功.txt", "开启正确次数:"+count+";");
System.out.println("KaiQiChengGong");
count=count+1;
} else if(onOff.getText().equals("关闭")){//开启失败!
FileUtil.out("/sdcard/dengshengyu/wifi/Wifi开启失败.txt", "开启失败次数:"+count1+";");
System.out.println("KaiQiShiBai");
count1=count1+1;
}
}else //否则为奇数,也就是为关闭
if(onOff.getText().equals("关闭")){//关闭成功
FileUtil.out("/sdcard/dengshengyu/wifi/Wifi关闭成功.txt", "关闭正确次数:"+count2+";");
System.out.println("GuanBiChengGong");
count2=count2+1;
} else if(onOff.getText().equals("开启")){//关闭失败
FileUtil.out("/sdcard/dengshengyu/wifi/Wifi关闭失败.txt", "关闭失败次数:"+count3+";");
System.out.println("GuanBiShiBai");
count3=count3+1;
}
}//for
}
}
这里添加个附件知识:
UiObject clickOnAndOff = new UiObject(new UiSelector().resourceId("com.android.settings:id/switchWidget"));
这条控件名默认是第一个开关,从我手机截图中大家可以知道我的wifi开关就在当前界面,而且resourceId就只有一个,大家有没有想过,要是当前界面有很多开关,而且resourceId和className等名称都一样呢,大家怎么获取?请看我另篇文章有讲解;
---------------------------------完,不明白的给我留言·······················
文章作者:享有盛誉之名