如何在 Xamarin UITests 获取列表视图项的计数

Posted

技术标签:

【中文标题】如何在 Xamarin UITests 获取列表视图项的计数【英文标题】:How to get count of the listview items at Xamarin UITests 【发布时间】:2018-04-13 09:49:16 【问题描述】:

假设我有显示特定项目列表的 Xamarin 应用程序和页面。 我想编写 UI 测试来添加一些项目,而不是尝试计算它们。

我有下一个列表视图:

<ListView x:Name="ListView" Grid.Row="1" ItemsSource="Binding Items, Mode=TwoWay" HorizontalOptions="StartAndExpand" VerticalOptions="StartAndExpand"
              BackgroundColor="Transparent" SeparatorVisibility="None" HasUnevenRows="false" Margin="20, 0">
        <ListView.ItemTemplate>
            <DataTemplate>
                    <ViewCell.View>
                        <Grid AutomationId="ListItem" VerticalOptions="FillAndExpand">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="1" />
                                <RowDefinition Height="*" />
                                <RowDefinition Height="1" />
                            </Grid.RowDefinitions>
                            <StackLayout Orientation="Horizontal" HorizontalOptions="StartAndExpand" VerticalOptions="Center" HeightRequest="38" Grid.Row="1">
                                <!-- item's description -->
                            </StackLayout>          
                        </Grid>
                    </ViewCell.View>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

还有我的 UI 测试:

[Test]
    public void CheckForSamplesAdding()
    
        app.Tap(c => c.Id("PageWithList"));

        // add some items: 

        app.EnterText("inputForItem", "item001");
        app.PressEnter();

        Task.Delay(250);

        app.EnterText("inputForItem", "item002");
        app.PressEnter();

        Task.Delay(250);

        app.EnterText("inputForItem", "item003");
        app.PressEnter();

        Task.Delay(250);

        // assert to check count of listView items
    

我想我必须将automationId添加到列表视图中,并以某种方式描述检查此列表视图中的项目计数..但我找不到任何信息如何执行它.. 先感谢您。

【问题讨论】:

【参考方案1】:

用类似的方法很容易计算屏幕上显示的元素数量:

app.Query(x => x.Marked("ListView").Child()).Length

如果你想计算所有元素,你应该使用backdoor,比如this answer。

另一种解决方案是滚动以尝试在列表中查找元素(如果您想测试的不仅仅是元素创建,这很有用)。

【讨论】:

以上是关于如何在 Xamarin UITests 获取列表视图项的计数的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.UITests - 在真实设备上进行测试 - iOS - 应用权限弹出窗口问题

Xamarin UITests:Calabash 未链接

Xamarin.UITests Android 设备未检测到或不工作

Xamarin.UITests ApkFile 或 InstalledApp 尚未在 VS 中配置

UITests-如何在 UITests 中获取当前语言

UITests - 如何在UITests中获取当前语言