工具栏项目的Xamarin Forms Automation ID

时间:2019-02-21 08:23:13

标签: xamarin.forms automated-tests appium

我们正在使用Appium构建测试自动化,我们需要为与之交互的元素添加唯一标识符。我们通过在XAML文件中添加AutomationId属性来实现这一点。

除工具栏项目外,此方法均正常运行。添加的AutomationId作为元素的content-desc不可见。

<core:AppBaseContentPage.ToolbarItems>
<ToolbarItem AutomationId="Button1" BindingContext="{Binding BindingContext, Source={x:Reference this}}" Parent="{x:Reference this}"
             Text="{extensions:Translate Button1}"
             Command="{Binding Button1Command}" />

这是预期的行为还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

ToolbarItems的AutomationId不起作用(至少在Android上如此),但是您可以使用text属性来识别它们。

<NavigationPage.ToolbarItems>
    <controls:BindableToolbarItem 
                 AutomationId="ToolbarButtonHelp"
                 Text="ToolbarButtonHelp"
                 Icon="help" 
                 Priority="0" 
                 Order="Primary"
                 IsVisible="{Binding ToolbarService.IsHelpVisible, Mode=TwoWay}"
                 Command="{Binding ToolbarService.HelpCommand}"/>

    <controls:BindableToolbarItem                   
                 AutomationId="ToolbarButtonMenu"
                 Text="ToolbarButtonMenu"
                 Icon="quick_menu" 
                 Priority="1" 
                 Order="Primary"
                 IsVisible="{Binding ToolbarService.IsMenuVisible, Mode=TwoWay}"
                 Command="{Binding ToolbarService.MenuCommand}"/>

</NavigationPage.ToolbarItems>

Xamarin UI测试示例

this.app.WaitForNoElement("ToolbarButtonHelp");