如何在Xamarin UITests中获取ListView项数及新增项后统计
嘿,我来帮你解决在Xamarin UITests里获取ListView条目数量的问题,结合你添加条目后统计的场景,给你详细的步骤和代码示例:
在Xamarin UITests中获取ListView条目数量的方法
一、基础获取方式
你的ListView已经设置了x:Name="ListView",我们可以利用这个标记定位到控件,再通过两种常用方式获取条目数量:
直接查询ListView的子元素:
UITest里,ListView的每个条目对应一个子元素(通常是ViewCell),直接统计子元素数量即可得到条目数:var listItemCount = App.Query(c => c.Marked("ListView").Child()).Count;查询条目内的特定标记元素:
如果你的ItemTemplate里有固定标记的控件(比如每个条目里的Label设置了x:Name="ItemTitle"),也可以直接查询这个控件的实例数量,结果就是条目总数:var listItemCount = App.Query(c => c.Marked("ItemTitle")).Count;
二、结合你的场景:添加条目后统计数量
针对你需要先添加若干条目再统计的需求,完整的测试流程可以这样实现:
1. 核心测试步骤
- 导航到展示ListView的目标页面
- 重复执行添加条目操作(点击添加按钮、输入内容、保存)
- 等待UI更新完成后,获取ListView的条目数量
- 断言数量是否符合预期
2. 完整代码示例
// 1. 导航到列表页面(假设跳转按钮的标记是"GoToItemsPage") App.Tap(c => c.Marked("GoToItemsPage")); // 2. 添加第一条测试条目 App.Tap(c => c.Marked("AddNewItemButton")); // 点击添加按钮 App.EnterText(c => c.Marked("ItemContentInput"), "我的第一条测试条目"); // 输入条目内容 App.Tap(c => c.Marked("SaveItemButton")); // 保存条目 // 3. 添加第二条测试条目 App.Tap(c => c.Marked("AddNewItemButton")); App.EnterText(c => c.Marked("ItemContentInput"), "我的第二条测试条目"); App.Tap(c => c.Marked("SaveItemButton")); // 4. 等待ListView完成渲染(可选,避免UI未更新导致统计错误) App.WaitForElement(c => c.Marked("ListView"), timeout: TimeSpan.FromSeconds(3)); // 5. 获取当前ListView的条目数量 var actualItemCount = App.Query(c => c.Marked("ListView").Child()).Count; // 6. 断言数量:这里添加了2条,假设初始条目数为0,预期结果为2 Assert.AreEqual(2, actualItemCount, "ListView的条目数量不符合预期");
三、额外注意事项
- 处理滚动加载场景:如果你的ListView是分页/滚动加载的,要先滚动到底部确保所有条目都加载完成,再统计数量:
// 滚动ListView到底部,确保全部条目加载 App.ScrollDownTo(c => c.Marked("ListView"), timeout: TimeSpan.FromSeconds(5)); // 再获取条目数量 var itemCount = App.Query(c => c.Marked("ListView").Child()).Count; - 确保标记唯一性:所有用于定位的
Marked值(比如按钮、输入框的x:Name)要保证在页面中唯一,避免定位错误。 - 等待UI更新:添加条目后UI可能有延迟,用
WaitForElement可以有效避免统计时的异步渲染问题。
内容的提问来源于stack exchange,提问作者pavel
相关产品推荐
相关产品推荐

