无法检查 WinAppDriver 中的 Grids/StackPanels/Custom 控件并通过 Appium 的 AccessibilityId 找到它们

Can't inspect Grids/StackPanels/Custom Controls in WinAppDriver & locate them by AccessibilityId with Appium

我的 UWP 应用程序在检查时显示了非常有限的部分元素(既没有使用 inspector.exe 也没有使用 Appium 客户端的检查器)。因此,尝试使用 Appium 的 FindElementByAccessibilityId 定位它们会导致 NoSuchElementException。

示例:

<Page [namespaces]>

    <Page.Resources>
       [Resources]
    </Page.Resources>

    <Grid AutomationProperties.AutomationId="CreationModeRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <Button x:Name="BackButton" />

            <StackPanel x:Name="MainToolsPanel"
                        Orientation="Horizontal">
                <controls:ToolBarButton x:Name="DrawingToolBallPen" />
                <controls:ColorSelectorDropDown x:Name="ColorPaletteDropDown">
                    <PathIcon Width="44"
                              Height="44"
                              Data="{StaticResource ColorToolIcon}">
                    </PathIcon>
                </controls:ColorSelectorDropDown>
            </StackPanel>
        </Grid>

        <ScrollViewer x:Name="Scroll">
            <inkCanvas:InkVectorCanvas x:Name="InkVectorCanvas" />
        </ScrollViewer>
    </Grid>
</Page>

从上面的代码中,唯一成功检查的元素是 BackButton、DrawingToolBallPen 和 Scroll。 CreationModeRoot、MainToolsPanel 和 InkVectorCanvas 都没有被检测到。

请告诉我如何正确构建我的视图。

我找到了解决方案:

AutomationId 和 AutomationName 自动映射到 x:Name 和 Content 属性。如果内容 属性 不是字符串,大多数时候检查工具无法检测到它们。使用 AutomationProperties.Name PropertyPath 覆盖 AutomationName 可解决该问题。