无法检查 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 可解决该问题。
我的 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 可解决该问题。