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

来源:互联网 发布:java的jdk和jre 编辑:程序博客网 时间:2024/05/18 00:18

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


文章作者:享有盛誉之名

阅读全文
0 0