В настоящее время я работаю над поддержкой тестов автоматизации пользовательского интерфейса, к сожалению, впервые работаю с этим. У меня проблема с тем, что я не могу добавить AutomationId для отображения в нужном элементе в сгенерированном XML-файле.
Проблема в том, что этот элемент является дочерним по отношению к другому элементу, и когда я добавляю AutomationId, будь то в коде C # или в XAML, этот AutomationId появляется только в самом верхнем элементе xml, который является некоторой прямоугольной панелью (кнопкой), но в этой кнопке есть некоторые другие элементы как изображение, метка кнопки, некоторая метка со счетчиком. Возможно, в будущем тестерам также понадобится доступ к этим подэлементам, но сейчас я могу найти только верхнюю прямоугольную область по идентификатору.
Вот структура кода элемента SomeEntryView
и его родительских элементов до View
, которая используется в коде при создании макетов и добавлении элементов в эти макеты.
public partial class SomeEntryView : MainMenuButton
{ ...
public partial class MainMenuButton : ContentView, IDisposable
...
public class ContentView : TemplatedView
...
public class TemplatedView : Layout
...
public abstract class Layout : View
Элемент в xaml определяется следующим образом
<c:MainMenuButton
x:Class="...Views.SomeEntryView"
AutomationId="automationIdTest"
... />
И полученный XML-файл выглядит так
<Custom AcceleratorKey="" AccessKey="" AutomationId="automationIdTest" ClassName="" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="custom" Name="" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.13" x="27" y="151" width="1868" height="148">
<Custom AcceleratorKey="" AccessKey="" AutomationId="" ClassName="" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="custom" Name="" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.17" x="27" y="151" width="1868" height="148">
<Custom AcceleratorKey="" AccessKey="" AutomationId="" ClassName="" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="custom" Name="" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.18" x="51" y="165" width="1830" height="110">
<Custom AcceleratorKey="" AccessKey="" AutomationId="" ClassName="" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="custom" Name="" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.19" x="51" y="175" width="286" height="100">
<Image AcceleratorKey="" AccessKey="" AutomationId="" ClassName="Image" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="image" Name="" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.21" x="51" y="175" width="106" height="100" />
<Text AcceleratorKey="" AccessKey="" AutomationId="" ClassName="TextBlock" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="text" Name="This is label for entry view" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.22" x="174" y="211" width="163" height="28" />
</Custom>
<Custom AcceleratorKey="" AccessKey="" AutomationId="" ClassName="" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="custom" Name="" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.20" x="1829" y="165" width="52" height="52">
<Custom AcceleratorKey="" AccessKey="" AutomationId="" ClassName="" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="custom" Name="" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.23" x="1829" y="165" width="52" height="52">
<Text AcceleratorKey="" AccessKey="" AutomationId="" ClassName="TextBlock" FrameworkId="XAML" HasKeyboardFocus="False" HelpText="" IsContentElement="True" IsControlElement="True" IsEnabled="True" IsKeyboardFocusable="False" IsOffscreen="False" IsPassword="False" IsRequiredForForm="False" ItemStatus="" ItemType="" LocalizedControlType="text" Name="109" Orientation="None" ProcessId="8804" RuntimeId="42.267070.4.24" x="1834" y="177" width="41" height="28" />
</Custom>
</Custom>
</Custom>
</Custom>
</Custom>
Как вы можете видеть, AutomationId="automationIdTest"
находится на самом верхнем элементе, но есть ли способ как-то добавить AutomationId и к его дочерним элементам? Я также попытался добавить AutomationId через код C # при добавлении этого MainMenuButton в макет как View
.