Xamarin UI测试:读取Repl树命令(网格)未显示的可见元素

时间:2018-10-11 11:28:38

标签: xaml xamarin xamarin.uitest


我有一个xaml页面,被一个Grid元素分割:

<Grid Style="{DynamicResource Key=MainGrid}" BackgroundColor="{DynamicResource Key=White}">
    <Grid.RowDefinitions>
        <RowDefinition Height="20*"></RowDefinition>
        <RowDefinition Height="12*"></RowDefinition>
        <RowDefinition Height="69*"></RowDefinition>
    </Grid.RowDefinitions>
</Grid>

稍后,我用两个标签填充第二个原始文件:

<StackLayout Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Spacing="10" Margin="{DynamicResource Key=ContentMargin}">
    <Label Text="Text1" AutomationId="Text1"/>
    <Label Text="Text2" AutomationId="Text2"/>
</StackLayout>

在应用程序的页面中,两个标签都显示了,但是我的问题是,测试自动机无法读取第二个文本。
如果我使用Repl并输入“ tree”命令,则根本不会读出第二个元素:

[Platform_DefaultRenderer]
    [LabelRenderer] label: "Text1_Container"
        [FormsTextView] id: "NoResourceEntry-18",  label: "Text1",  text: "Text1"
[Platform_DefaultRenderer]

如果我将第2行的高度加2%(并减去第3行的2%),则这两个元素对于UI测试都是可见的。
为什么会这样?除了更改“行高”以读取“ Text2”的内容外,我是否可以更改其他内容?

我将android 8.1用于该应用。

2 个答案:

答案 0 :(得分:1)

您尝试访问第二个元素的查询是什么?如果只需要获取第二个元素的文本,请尝试使用:

app.Query(c => c.All().Class("FormsTextView").Index(1)).First().Text

即使“ tree”命令不可见,它也应该找到该元素。

答案 1 :(得分:0)

在Android上,Xamarin.UITest只能访问当前在屏幕上并稍有超出的视图。因此,尝试使用app.ScrollDown(...)向下滚动。

您将不会在iOS上遇到该问题。