IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Appium踩坑】使用Appium Setting开启wifi or 关闭wifi,弹系统wifi权限弹窗问题 -> 正文阅读

[移动开发]【Appium踩坑】使用Appium Setting开启wifi or 关闭wifi,弹系统wifi权限弹窗问题

1、背景说明

从解决这个问题引申而来:
【Appium踩坑】Mitmproxy脚本+Appium启动后,手机无网络问题

使用Appium Setting开启wifi or 关闭wifi后,会弹系统wifi权限弹窗。
请添加图片描述

2、原理分析

使用Appium Setting开启wifi or 关闭wifi,其实就是执行这个命令:

# 开启wifi
adb shell am broadcast -a io.appium.settings.wifi -n io.appium.settings/.receivers.WiFiConnectionSettingReceiver --es setstatus enable
# 关闭wifi
adb shell am broadcast -a io.appium.settings.wifi -n io.appium.settings/.receivers.WiFiConnectionSettingReceiver --es setstatus disable

但是通过broadcast 申请权限后,就会弹出系统弹窗,我们需要对弹窗内容做处理。

3、解决

(1)思路1 - 手动允许Appium setting的wifi权限,可行?

Appium setting 在一个设备上一般只安装一次,下次不需要重新安装。
也就是只需要手动操作一次,也算一劳永逸。

(2)思路2 - 通过 svc 开启/关闭wifi, 可行 ?

adb shell svc wifi enable
adb shell svc wifi disable

其他信息:

  • 本命令在小米11上执行生效,但不知道是否会有厂商限制 ,有待确认。
  • 本命令必须在driver启动之前执行,不然可能会导致目标app anr -> 出现概率99%,不知道是有个啥大病

(3)思路3 - 通过Appium UI操作开启、关闭wifi - 待验证?

1、先打开wifi页面:
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
2、判断当前网络情况,如 ping baidu
3、如ping通,UI操作-关闭wifi,再打开wifi
4、如ping不通,UI操作-打开wifi

(4)思路4 - Appium申请修改wifi状态后,uiautomator2关闭弹窗 - 不可行?

不可行原因:Appium 和 U2,一起用会抢占 Accessibility Service

def appiumAlert_handler(switch):
    """
    开启wifi,关闭wifi;监听弹窗处理
    :return:
    """
    devices = get_devices()
    _driver = uiautomator2.connect_usb(serial=devices)

    # 关闭wifi
    t1 = threading.Thread(target=switch_connection, args=(switch,))
    t1.start()
    # 开始检查弹窗

    obj = _driver.watch_context()
    alert = "允许一次"
    obj.when(alert).click()
    obj.stop() 
    _driver.uiautomator.stop() 
    time.sleep(2)
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:36:39  更:2022-03-30 18:39:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 19:06:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码