You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#版Xamarin UITest中切换Xamarin Android/iOS应用的网络连接

Xamarin UITest中切换网络连接状态的方法

嘿,刚好我之前也处理过类似的需求!Xamarin UITest本身并没有像Appium那样直接提供toggleWifi()这种统一的方法,但针对Android和iOS平台,我们可以用不同的方式实现网络状态的切换:

Android平台实现

Android平台下,Xamarin UITest提供了直接控制网络的API,你可以通过App.Device.SetNetworkConnection方法来设置网络状态,这个方法接受NetworkConnection枚举参数,支持多种网络组合:

  • NetworkConnection.None:关闭所有网络连接
  • NetworkConnection.WifiOnly:仅开启WiFi
  • NetworkConnection.CellularOnly:仅开启移动数据
  • NetworkConnection.All:开启所有网络

示例代码(C#)

using Xamarin.UITest;
using Xamarin.UITest.Android;

// 先判断当前平台是否为Android
if (App is AndroidApp androidApp)
{
    // 获取当前网络状态
    var currentNetwork = androidApp.Device.NetworkConnection;
    
    // 切换WiFi状态:如果当前开启WiFi则关闭,否则开启
    if (currentNetwork.HasFlag(NetworkConnection.Wifi))
    {
        // 关闭WiFi,保留其他网络(如果有的话)
        androidApp.Device.SetNetworkConnection(currentNetwork & ~NetworkConnection.Wifi);
    }
    else
    {
        // 开启WiFi
        androidApp.Device.SetNetworkConnection(currentNetwork | NetworkConnection.Wifi);
    }
}

iOS平台实现

iOS由于系统安全限制,Xamarin UITest没有提供直接修改系统网络设置的API。如果你的测试是在模拟器上运行,可以通过命令行工具来切换WiFi;如果是真机,则需要通过自动化系统设置APP的方式来操作:

模拟器方案(命令行)

你可以在测试代码中调用终端命令来控制模拟器的网络状态:

using System.Diagnostics;

// 关闭iOS模拟器WiFi
Process.Start("xcrun", "simctl network booted disable wifi");

// 开启iOS模拟器WiFi
Process.Start("xcrun", "simctl network booted enable wifi");

真机方案(自动化设置APP)

如果是真机,你需要引导到系统设置的WiFi页面,然后模拟点击开关:

// 打开iOS设置APP的WiFi页面
App.Invoke("openURL:", new Uri("prefs:root=WIFI"));

// 等待WiFi开关加载完成
App.WaitForElement(c => c.Marked("Wi-Fi"));

// 找到WiFi开关并点击切换状态
App.Tap(c => c.Class("UISwitch").Index(0));

注意:真机上需要在被测APP的Info.plist中添加prefs:root=WIFI的URL Scheme白名单,否则无法跳转至设置页面。

总结

  • Android平台可以直接用Xamarin UITest内置的SetNetworkConnection方法轻松切换网络状态
  • iOS平台模拟器可以用simctl命令行快速控制,真机则需要通过自动化系统设置APP来实现

内容的提问来源于stack exchange,提问作者Reshma Pradeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:43:17