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

如何用Xamarin UI Test和App Center测量Xamarin应用API调用耗时?

解决Xamarin UI Test中API调用耗时统计问题

问题分析

你的代码逻辑框架没问题,但没统计到实际30秒耗时,大概率是以下原因:

  • 目标元素"Got Results"定位不准确:该元素可能在API返回前就已存在,或者AutomationId设置错误,导致WaitForElement提前完成等待。
  • 未等待加载状态结束:如果点击搜索后有加载动画,直接等待结果元素可能会因为空状态容器已存在而误判流程完成。

解决方案

1. 确认元素定位的准确性

首先确保"Got Results"对应的元素是API返回结果后才渲染出来的,比如结果列表的根容器,或仅在有结果时显示的提示文本。在Xamarin项目的XAML中正确设置其AutomationId:

<!-- 示例:结果列表容器 -->
<ListView AutomationProperties.AutomationId="Got Results" ...>

2. 优化计时逻辑

加入对加载状态的等待,确保计时覆盖从点击搜索到结果完全显示的全流程:

var stopwatch = new Stopwatch();
stopwatch.Start();

// 触发搜索操作
app.Tap("SearchButton");

// 先等待加载指示器消失(替换为你的加载元素标记,比如LoadingSpinner)
app.WaitForNoElement(q => q.Marked("LoadingSpinner"), "加载状态未消失", TimeSpan.FromSeconds(50));

// 再等待结果元素出现
app.WaitForElement(q => q.Marked("Got Results"), "未找到结果元素", TimeSpan.FromSeconds(50));

stopwatch.Stop();
long elapsedMs = stopwatch.ElapsedMilliseconds;
// 将耗时写入日志,用于负载测试分析
Console.WriteLine($"搜索API处理并显示结果耗时:{elapsedMs}ms");

3. 排查验证步骤

  • 若计时依然不准确,可在关键节点添加日志,确认各步骤的时间点:
    Console.WriteLine($"点击搜索时间:{DateTime.Now:HH:mm:ss.fff}");
    app.Tap("SearchButton");
    Console.WriteLine($"等待加载消失开始:{DateTime.Now:HH:mm:ss.fff}");
    app.WaitForNoElement(q => q.Marked("LoadingSpinner"));
    Console.WriteLine($"等待结果开始:{DateTime.Now:HH:mm:ss.fff}");
    app.WaitForElement(q => q.Marked("Got Results"));
    Console.WriteLine($"结果加载完成时间:{DateTime.Now:HH:mm:ss.fff}");
    
  • 检查App Center测试日志,确认WaitForElement是否触发超时,或者是否提前找到了元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:15:44