如何通过Appium Python实现移动设备网络的断开与连接?
Python + Appium 实现移动设备网络断开与恢复
Hey there! 我刚好在Appium自动化测试里折腾过不少网络控制的需求,给你分享Android和iOS两大平台的具体实现方法,都是Python代码,直接就能套用~
Android 平台实现方法
Android的网络控制方式比较灵活,有两种常用方案:
方案1:调用ADB系统命令(推荐,兼容性好)
通过Appium执行ADB shell命令,直接控制系统的WiFi和移动数据开关,大部分非Root设备也支持:
# 断开WiFi driver.execute_script('mobile: shell', {'command': 'svc wifi disable'}) # 恢复WiFi driver.execute_script('mobile: shell', {'command': 'svc wifi enable'}) # 断开移动数据 driver.execute_script('mobile: shell', {'command': 'svc data disable'}) # 恢复移动数据 driver.execute_script('mobile: shell', {'command': 'svc data enable'})
方案2:使用Appium内置的NetworkConnection API
这个是Appium封装好的方法,适合快速切换整体网络状态:
首先需要导入对应的枚举类:
from appium.webdriver.connectiontype import NetworkConnectionType
然后执行网络切换:
# 断开所有网络(类似关闭WiFi+移动数据,部分设备可能触发飞行模式) driver.set_network_connection(NetworkConnectionType.NO_CONNECTION) # 恢复所有网络(WiFi+移动数据同时开启) driver.set_network_connection(NetworkConnectionType.ALL_NETWORK_ON) # 仅开启WiFi,关闭移动数据 driver.set_network_connection(NetworkConnectionType.WIFI_ONLY) # 仅开启移动数据,关闭WiFi driver.set_network_connection(NetworkConnectionType.DATA_ONLY)
iOS 平台实现方法
iOS因为系统权限限制,需要用Appium专门提供的mobile命令来操作:
WiFi 控制
可以直接切换WiFi状态,或者强制设置开关:
# 切换WiFi状态(断开/恢复一键切换) driver.execute_script('mobile: toggleWiFi') # 直接设置WiFi为关闭状态(iOS 10+支持) driver.execute_script('mobile: setPrefs', {'wifiEnabled': False}) # 直接设置WiFi为开启状态 driver.execute_script('mobile: setPrefs', {'wifiEnabled': True})
移动数据控制
通过专门的命令控制蜂窝数据:
# 断开移动数据 driver.execute_script('mobile: setCellularDataEnabled', {'enabled': False}) # 恢复移动数据 driver.execute_script('mobile: setCellularDataEnabled', {'enabled': True})
注意事项
- Android设备:部分定制化ROM可能对
svc命令有限制,要是遇到执行失败的情况,可以尝试用adb shell am start -a android.intent.action.MAIN -n com.android.settings/.WirelessSettings打开设置页面,再用Appium元素定位点击开关(这种方法兼容性最强,但步骤多)。 - iOS设备:需要确保WebDriverAgent有足够的权限,建议在Desired Capabilities里添加
autoAcceptAlerts: True,避免系统权限弹窗打断操作;模拟器和真机的命令兼容性一致,可以放心使用。
内容的提问来源于stack exchange,提问作者TeSter
相关产品推荐
相关产品推荐

