uiautomator中如何判断开关wifi开启和关闭是否正确

版权声明:本文为享有盛誉之名博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bbs11007/article/details/78337651

在我们测试压力中肯定有这么些用例,就是让你打开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等名称都一样呢,大家怎么获取?请看我另篇文章有讲解;

 

---------------------------------完,不明白的给我留言·······················

文章作者:享有盛誉之名

没有更多推荐了,返回首页