Xamarin.forms Xamarin表单上的UITest将StyleId作为标签而不是ID写入

Xamarin.forms Xamarin表单上的UITest将StyleId作为标签而不是ID写入,xamarin.forms,uitest,Xamarin.forms,Uitest,我正在尝试在Xamarin表单项目上设置UI测试 我按照指南将StyleId添加到我的username控件中 <Entry x:Name="username_name" StyleId="username_styleid" Text="{Binding Username, Mode=TwoWay}" IsEnabled="{Binding IsBusy, Converter={StaticResource ReverseBoolConver

我正在尝试在Xamarin表单项目上设置UI测试

我按照指南将StyleId添加到我的username控件中

<Entry x:Name="username_name" 
        StyleId="username_styleid"
        Text="{Binding Username, Mode=TwoWay}"
        IsEnabled="{Binding IsBusy, Converter={StaticResource ReverseBoolConverter}}"
        Style="{StaticResource TextboxLight}"
        Placeholder="{Binding UsernameLabel}" />
当我运行测试并使用REPL时,我可以看到StyleId已作为label属性而不是id属性输出


有没有人能做到这一点?

使用StyleId很快就会被2.2.0淘汰

我还没有亲自测试过,但是

自动ID支持

Forms现在拥有对设置自动化的一流支持 用于Xamarin UITest或其他测试框架的标识符。 只需设置AutomationID属性就可以实现自动化 框架来查找控件并与之交互


不确定AutomationId转换成什么,但希望是一个ID。

使用StyleId将很快被2.2.0淘汰

我还没有亲自测试过,但是

自动ID支持

Forms现在拥有对设置自动化的一流支持 用于Xamarin UITest或其他测试框架的标识符。 只需设置AutomationID属性就可以实现自动化 框架来查找控件并与之交互


不确定AutomationId转换成什么,但希望是一个按设计工作的ID。

。在iOS上,您将看到值显示为
id
;在Android上,它将显示为
标签

app.Query(c=>c.Marked(“username\u styleid”)
将跨平台工作。
app.Query(“username\u styleid”)
的缩写形式也做同样的事情


标记
将在iOS上的
id
字段中找到具有指定值的元素;Android上的
标签
字段和其中一个上的as
文本
。因此,在编写测试时,使其简单且有用的一个关键是使StyleID(或AutomationId)不同于应用程序中显示的文本。

按设计工作。在iOS上,您将看到值显示为
id
;在Android上,它将显示为
标签

app.Query(c=>c.Marked(“username\u styleid”)
将跨平台工作。
app.Query(“username\u styleid”)
的缩写形式也做同样的事情


标记
将在iOS上的
id
字段中找到具有指定值的元素;Android上的
标签
字段和其中一个上的as
文本
。因此,在编写测试时,使其简单实用的一个关键是使StyleID(或AutomationId)不同于应用程序中显示的文本。

谢谢Adam,好消息。我希望它能很好地工作,因为我们有大量的UI测试要编写。刚刚玩了2.2.04-pre2和新的AutomationId属性。不幸的是,它仍然将其作为标签输出,而不是一个idGood,因为上面确认了它。我正要再检查一遍,但我有一种感觉,这是一个标签。谢谢亚当,好消息。我希望它能很好地工作,因为我们有大量的UI测试要编写。刚刚玩了2.2.04-pre2和新的AutomationId属性。不幸的是,它仍然将其作为标签输出,而不是一个idGood,因为上面确认了它。我正要再检查一遍,但我有一种感觉,这是一个标签。谢谢格伦。我开始意识到这一点,但很高兴得到证实。谢谢格伦。我开始意识到这一点,但很高兴得到证实。
Forms.ViewInitialized += (sender, e) => {
    if (!string.IsNullOrWhiteSpace(e.View.StyleId))
    {
        e.NativeView.ContentDescription = e.View.StyleId;
    }
};