我有一个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用于该应用。
答案 0 :(得分:1)
您尝试访问第二个元素的查询是什么?如果只需要获取第二个元素的文本,请尝试使用:
app.Query(c => c.All().Class("FormsTextView").Index(1)).First().Text
即使“ tree”命令不可见,它也应该找到该元素。
答案 1 :(得分:0)
在Android上,Xamarin.UITest只能访问当前在屏幕上并稍有超出的视图。因此,尝试使用app.ScrollDown(...)
向下滚动。
您将不会在iOS上遇到该问题。