在进行robotium 编写自动化测试用例的时候,有些case 需要控制网络来进行验证,这个时候就需要来回关闭,打开wifi 连接。在网上搜了一下,使用方法比较简单,整理如下:

1、首先需要在app中的 AndroidManifest.xml 文件中申请wifi的访问权限,配置如下:

Xml代码  
  1. <!--申请操作wifi的权限 -->
  2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  3. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
  4. <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

2、java wifi控制代码如下:

  1. import java.util.List;  import android.content.Context;
    import android.net.wifi.ScanResult;
    import android.net.wifi.WifiConfiguration;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    import android.net.wifi.WifiManager.WifiLock;  public class WifiAdmin{//代码来自网络,原址找不到了……  private WifiManager mWifiManager;   //定义WifiManager对象  private WifiInfo mWifiInfo; //定义WifiInfo对象  private List<ScanResult> mWifiList;   //扫描出的网络连接列表  private List<WifiConfiguration> mWifiConfiguration;   //网络连接列表
      WifiLock mWifiLock; //定义一个WifiLock  public  WifiAdmin(Context context){  mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);        //取得WifiManager对象  mWifiInfo = mWifiManager.getConnectionInfo();       //取得WifiInfo对象
        }  //打开WIFI  public void openWifi(){  if (!mWifiManager.isWifiEnabled()){  mWifiManager.setWifiEnabled(true);  }  }  //关闭WIFI  public void closeWifi(){  if (mWifiManager.isWifiEnabled()){  mWifiManager.setWifiEnabled(false);   }  }  //锁定WifiLock,当下载大文件时需要锁定  public void acquireWifiLock(){  mWifiLock.acquire();  }  public void releaseWifiLock(){//解锁WifiLock  //判断时候锁定  if (mWifiLock.isHeld()){  mWifiLock.acquire();  }  }  public void creatWifiLock(){//创建一个WifiLock  mWifiLock = mWifiManager.createWifiLock("Test");  }  public List<WifiConfiguration> getConfiguration(){    //得到配置好的网络  return mWifiConfiguration;  }  public void connectConfiguration(int index){//指定配置好的网络进行连接  //索引大于配置好的网络索引返回  if(index > mWifiConfiguration.size()){  return;  }  //连接配置好的指定ID的网络  mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true);  }  public void startScan(){  mWifiManager.startScan();       //得到扫描结果   mWifiList = mWifiManager.getScanResults();   mWifiConfiguration = mWifiManager.getConfiguredNetworks();//得到配置好的网络连接
        }  public List<ScanResult> getWifiList(){//得到网络列表  return mWifiList;  }  public StringBuilder lookUpScan(){//查看扫描结果  StringBuilder stringBuilder = new StringBuilder();  for (int i = 0; i < mWifiList.size(); i++){  stringBuilder.append("Index_"+new Integer(i + 1).toString() + ":");  //将ScanResult信息转换成一个字符串包  //其中把包括:BSSID、SSID、capabilities、frequency、level
                stringBuilder.append((mWifiList.get(i)).toString());  stringBuilder.append("\n");  }  return stringBuilder;  }  //得到MAC地址  public String getMacAddress()   {  return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();  }  //得到接入点的BSSID  public String getBSSID(){  return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();  }  //得到IP地址  public int getIPAddress(){  return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();  }  //得到连接的ID  public int getNetworkId(){  return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();  }  //得到WifiInfo的所有信息包  public String getWifiInfo(){  return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();  }  //添加一个网络并连接  public void addNetwork(WifiConfiguration wcg){  int wcgID = mWifiManager.addNetwork(wcg);   mWifiManager.enableNetwork(wcgID, true);   }  //断开指定ID的网络  public void disconnectWifi(int netId){  mWifiManager.disableNetwork(netId);  mWifiManager.disconnect();  }
    }  

转载于:https://www.cnblogs.com/xiao-kkp/p/4016134.html

android测试中如何控制wifi相关推荐

  1. monkey测试中防止关闭WIFI的方法

    monkey测试中防止关闭WIFI的方法 在monkey测试过程中,经常出现随机下拉顶部的状态栏,导致WIFI被关闭,测试过程中无网络,业务流程无法进行验证,针对这种情况,有如下两种解决方法: 1.时 ...

  2. android 通过adb命令控制wifi开关

    android 通过adb命令控制wifi开关 2017年08月23日 17:47:46 刘国栋 阅读数:14598 版权声明:本文为博主原创文章,转载请声明文章出处. https://blog.cs ...

  3. Android测试中被测应用挂了怎么办?

    视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html ==================================== ...

  4. Android测试中常用的adb命令、monkey命令

    Android调试桥,一种多功能命令行工具,与设备进行通信 查看adb版本:adb version 关闭和启动adb服务:adb kill-server // adb start-server 安装a ...

  5. 线上bug检测工具 android,Android 测试中对于偶现且难以重现的 bug 的处理

    吐槽 请先允许我对此类 bug 进行吐槽,相信做测试的同学都碰见过这种 bug! 我们在测试过程中经常会碰见一类很头疼的 bug,就是偶现性的 bug,所谓偶现性,是相对于必现而言,这类 bug 有些 ...

  6. appium java 点击事件_“按钮点击”在Appium Android测试中给出“处理命令时出现未知的服务器端错误 . ”...

    info:[debug]将命令推送到appium工作队列:["element:getSize",{"elementId":"2"}] inf ...

  7. Android系统中通过shell命令实现wifi的连接控制

    简介 工作中遇到一个"变态"的需求,在android系统中不通过java层控制wifi的连接(主要是修改ap的essid和password),而是需要通过native层实现对wif ...

  8. android 控制wifi模块,Android 控制wifi 相关操作实例

    Android 控制WIFI相关操作 WIFI的全称是Wireless Fidelity,又称802.11b标准,是一种高速的无线通信协议,传输速度可以达到11Mb/s. 实际上,对WIFI并不需要过 ...

  9. 【Android 安装包优化】WebP 应用 ( 4.0 以下兼容 WebP | Android Studio 中使用 libwebp.so 库向下兼容版本 | libwebp 库测试可用性 )

    文章目录 一. Android Studio 中导入 libwebp.so 库 二. Android Studio 中测试 libwebp.so 库 三.参考资料 一. Android Studio ...

  10. Android环境下通过C框架层控制WIFI【转】

    本文转载自:https://blog.csdn.net/edw200/article/details/52192631 本人是从事Linux嵌入式开发的,安卓wifi控制在安卓JAVA层已经做得非常成 ...

最新文章

  1. Linux环境Shell脚本上传下载阿里云OSS文件
  2. UNITY Destroy()和DestroyImadiate()的区别
  3. linux 全球用户数量,全球Linux用户市场占有率升至2.78%
  4. Java分割字符split与StringTokenizer
  5. 计算机视觉研究入门全指南
  6. mysql sdi_MySQL 8.0新特性: 数据字典
  7. 你的护城河在哪?老程序员的一些2016感悟
  8. 构建面向对象的应用软件系统框架
  9. MySQL之Handler_read_*查看索引使用情况
  10. 基于C语言的基础学习Java
  11. 空间计量:地理加权回归模型-(GWR)-参数估计
  12. 指派问题中匈牙利算法----Python实现
  13. Google 电子表格函数列表
  14. oracle工程师 的职业,数据库工程师的职业规划
  15. Python之OpenCV 007 《走近混沌》分形艺术Fractal之美
  16. 深度学习:用生成对抗网络(GAN)来恢复高分辨率(高精度)图片 (附源码,模型与数据集)
  17. 【密码学】七、密钥管理
  18. 仙武:开局神级召唤!(三)
  19. 绘画系统——P5.js
  20. 人工智能会为远程学习带来春天吗?

热门文章

  1. 新颖的自我介绍_有哪些非常有创意的自我介绍?
  2. 仿任务面板 跨多个RecyclerView的Item拖动 支持缩小后拖动
  3. 记录一次常见的错误:java.sql.SQLException: Got error 28 from storage engine
  4. Spark streaming消费Kafka的正确姿势
  5. Eventbus收录
  6. Mybatis缓存机制及mybatis的各个组成部分
  7. 动态控制C4C UI元素的显示和隐藏
  8. dubbo源码分析12——服务暴露3_doExportUrls()方法分析
  9. CrazyWing:Python自动化运维开发实战 七、Python数据类型之数字
  10. JAVA-数据库之MySQL与JDBC驱动下载与安装