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

如何为Xamarin应用的UWP项目实现UI自动化测试?

适用于Xamarin.Forms UWP项目的UI测试方案

1. WinAppDriver + Appium(官方推荐方案)

这是微软官方支持的UWP UI测试方案,兼容性好,能和你已用的Xamarin.UITest测试逻辑风格对齐:

  • 先安装WinAppDriver,完成后确保其后台服务正常运行(默认端口4723)
  • 在UWP项目的Package.appxmanifest里启用测试签名,同时给需要测试的元素设置AutomationId(Xamarin.Forms里通过AutomationProperties.AutomationId附加属性统一设置,和Android/iOS测试保持一致)
  • 用Appium的C#绑定编写测试,示例初始化代码:
var appOptions = new AppiumOptions();
appOptions.AddAdditionalCapability("app", "你的UWP应用包名(可从Package.appxmanifest中获取)");
appOptions.AddAdditionalCapability("deviceName", "WindowsPC");
var driver = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), appOptions);
  • 元素操作逻辑和Xamarin.UITest类似,比如通过AutomationId定位后执行点击、输入等操作,可复用部分跨平台测试的定位逻辑

2. Visual Studio原生UWP测试框架

利用VS自带的测试工具链,无需额外第三方框架:

  • 在解决方案中创建UWP测试项目,引用目标Xamarin.Forms的UWP应用
  • 使用Windows.UI.Xaml.Automation命名空间下的API进行元素定位与操作,配合MSUnit或xUnit编写测试用例,示例代码:
// 启动UWP应用
var appUri = new Uri("ms-appx://你的UWP应用包名/");
await ApplicationLauncher.LaunchUriAsync(appUri);

// 定位元素
var targetElement = AutomationElement.RootElement.FindFirst(
    TreeScope.Descendants,
    new PropertyCondition(AutomationElement.AutomationIdProperty, "你的元素ID")
);

// 执行点击操作
var invokePattern = targetElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
invokePattern?.Invoke();

3. 跨平台测试套件统一方案

为了和已有的Android/iOS Xamarin.UITest套件整合,可将UWP测试逻辑单独抽离,用WinAppDriver实现,保持测试用例结构一致:

  • 抽象出统一的元素操作接口,Android/iOS用Xamarin.UITest实现,UWP用WinAppDriver实现
  • 测试用例的业务逻辑可复用,仅驱动初始化和底层操作不同,降低维护成本

注意事项

  • 运行WinAppDriver时需要以管理员身份启动,否则可能无法正常启动UWP应用
  • 确保所有需要测试的UI元素都设置了唯一的AutomationId,这是跨平台测试元素定位的核心
  • 可借助Appium Inspector工具辅助录制和定位UWP元素,简化测试编写流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:05:27