Автоматизация кнопки «Закрыть», «Развернуть», «Свернуть» на ленте Fluent (Codeplex) - Приложение WPF - PullRequest
3 голосов
/ 06 января 2012

Я пытаюсь автоматизировать беглое управление лентами (www.fluent.codeplex.com). Я успешен в автоматизации большинства элементов управления. Но есть такая проблема, как кнопки «Закрыть», «Развернуть» и «Свернуть», которые не распознаются или не идентифицируются с помощью инструмента автоматизации пользовательского интерфейса, например, кодированный тест пользовательского интерфейса с использованием Visual Studio. Инструмент Spy не идентифицирует кнопки «закрыть», «развернуть», «свернуть» и т. Д. Я не могу закрыть приложение (которое использует свободную ленту) с помощью автоматизации.

Я искал следующий раздел кода в RibbonWindow.xaml

<StackPanel x:Name="PART_ButtonsPanel" HorizontalAlignment="Right" Margin="0,8,8,0" VerticalAlignment="Top" Orientation="Horizontal">
          <Button x:Name="minimizeButton" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="1,0,0,1" Command="{x:Static Fluent:RibbonWindow.MinimizeCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonMinimize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
          <Button x:Name="maximizeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,0,1" Command="{x:Static Fluent:RibbonWindow.MaximizeCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonMaximize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
          <Button x:Name="normalizeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,0,1" Command="{x:Static Fluent:RibbonWindow.NormalizeCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonNormalize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
          <Button x:Name="closeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,1,1" Background="Red" Command="{x:Static Fluent:RibbonWindow.CloseCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonClose}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
        </StackPanel>

Я перепробовал много вещей (например, поставил Automation Id), но ничего не получалось. Я смотрю на неправильную часть кода?

Может ли кто-нибудь помочь в добавлении интерфейса автоматизации или имени в кнопку закрытия или внесение некоторых изменений, объясняющих, почему я могу решить проблему? Единственное требование - «Закрыть», «Развернуть», «Свернуть», кнопка должна быть идентифицирована инструментом автоматизации пользовательского интерфейса.

Привет

Ответы [ 2 ]

0 голосов
/ 26 апреля 2017

Вы можете попробовать Automation Spy для второй проверки. Если UI Automation ничего не дает, вы можете попробовать отправить (см. SendMessage ) сообщения Win32, такие как WM_CLOSE, в окно управления, и вы можете использовать функцию ShowWindow с параметром SW_MAXIMIZE, SW_MINIMIZE.

0 голосов
/ 07 января 2012

Это не поможет вам определить кнопки, но вы можете попробовать отправить стандартные сочетания клавиш в окно, чтобы фактически выполнить действия:

//close the window
Keyboard.SendKeys(myWindow, "{F4}", ModifierKeys.Alt);
...