Для моего приложения WPF я работаю над автоматизированным тестом UI с использованием TestStack.White.
Я использую элементы управления DoubleUpDown из инструментария xceed wpf в моем приложении.
Как я могу получить доступ к элементу управления DoubleUpDown в своих автоматизированных тестах пользовательского интерфейса?Как автоматизировать xceed updown controls
ответ
Используя UIA Verify, вы можете увидеть, что контроль DoubleUpDown рассматриваются как три управления без какой-либо информации об иерархии и следующих AutomationIds:
- AutoSelectTextBox
- Part_IncreaseButton
- Part_DecreaseButton
Итак, вы можете автоматизировать их как обычные элементы управления, но если в одном окне есть несколько элементов управления DoubleUpDown, возникает проблема, потому что все элементы управления будут иметь одинаковые AutomationIds.
Вот пример приложения с двумя первым текстовым полем как элементы управления DoubleUpDown, а третий - как пользовательский, предназначенный для автоматизации.
...
<Label Content="Label for DoubleUpDown1" Grid.Row="0" Grid.Column="0"
FontSize="15" Background="Aqua"/>
<xctk:DoubleUpDown Name="test1" Grid.Row="0" Grid.Column="1"
FormatString="F3" Value="1564.6749586" Increment=".001" Maximum="200000.599"
AutomationProperties.AutomationId="006" AutomationProperties.Name="NormalDoubleUpDown1" />
<Label Content="Label for DoubleUpDown2" Grid.Row="1" Grid.Column="0"
FontSize="15" Background="Aqua"/>
<xctk:DoubleUpDown Name="test2" Grid.Row="1" Grid.Column="1"
FormatString="F3" Value="1564.6749586" Increment=".001" Maximum="300000.751"
AutomationProperties.AutomationId="007" AutomationProperties.Name="NormalDoubleUpDown2" />
<Label Content="Label for MyDoubleUpDown" Grid.Row="2" Grid.Column="0" FontSize="15" Background="Aqua" />
<local:MyDoubleUpDown x:Name="test3" Grid.Row="2" Grid.Column="1"
FormatString="F3" Value="1564.7749586" Increment=".001" Maximum="200000.599"
AutomationProperties.AutomationId="008" AutomationProperties.Name="My Custom DoubleUpDown" />
...
В МАУ Убедитесь, обычные средства управления DoubleUpDown появляется с теми же AutomationIds. Пользовательский интерфейс отображается с реальной иерархией и может быть использован AutomationId, который был установлен в XAML (здесь).
Обычай управления MyDoubleUpDown, простой подкласс Xceed один, но с одноранговым элементом автоматизации.
public class MyDoubleUpDown : Xceed.Wpf.Toolkit.DoubleUpDown
{
protected override AutomationPeer OnCreateAutomationPeer()
{
return new MyDoubleUpDownAutomationPeer(this);
}
}
public class MyDoubleUpDownAutomationPeer : FrameworkElementAutomationPeer
{
public MyDoubleUpDownAutomationPeer(MyDoubleUpDown owner)
: base(owner)
{
}
}
Это способ по умолчанию для автоматизации уникального элемента управления DoubleUpDown в окне.
// link to the application and retrieve the main window
Application application = Application.Attach("WpfTestApplication1");
var windows = application.GetWindows();
var window = windows.FirstOrDefault();
// get the child components
TextBox theEdit = window.Get<TextBox>("AutoSelectTextBox");
Button increaseButton = window.Get<Button>("PART_IncreaseButton");
Button decreaseButton = window.Get<Button>("PART_DecreaseButton");
// define the value
theEdit.SetValue("600");
// increase and decrease the value
increaseButton.Click();
increaseButton.Click();
increaseButton.Click();
decreaseButton.Click();
И это код для автоматизации пользовательского элемента управления на основе Xceed.
// retrieve the custom control
IUIItem theCustomControl = window.Get(SearchCriteria.ByAutomationId("008"));
// get the childs items
if(theCustomControl is CustomUIItem)
{
// retrieve the custom control container
IUIItemContainer foundCustomControl = (theCustomControl as CustomUIItem).AsContainer();
// get the child components
TextBox theEdit3 = foundCustomControl.Get<TextBox>("AutoSelectTextBox");
Button increaseButton3 = foundCustomControl.Get<Button>("PART_IncreaseButton");
Button decreaseButton3 = foundCustomControl.Get<Button>("PART_DecreaseButton");
// perform actions...
theEdit3.SetValue("800");
increaseButton3.Click();
increaseButton3.Click();
}
- 1. numeric updown vb.net
- 2. numeric updown control C#
- 3. Открыть ui.boostrap typeahead updown
- 4. DateTimePicker updown February missing
- 5. Xceed GridControl
- 6. Числовое UpDown в C#
- 7. JQuery Updown странное поведение
- 8. ListBox как числовое управление UpDown в WPF
- 9. Xceed Datagrid не привязывается к DataTemplate элемента управления Xceed
- 10. AutoCAD Custom Extended WPF UpDown
- 11. Значение [...] Недействительный выбор, django-updown
- 12. Локализация Xceed DataGrid
- 13. Styling Xceed ColumnManagerCell
- 14. Xceed DataGrid SelectedItem issue
- 15. Xceed MaskedTextBox ArgumentException
- 16. привязка к диаграмме Xceed
- 17. Xceed datagrid, показывающий combobox
- 18. C# xceed DateTimePicker
- 19. Xceed DataGrid Ошибка
- 20. Использование Xceed PropertyGrid
- 21. Dynamically Controls
- 22. setTimeout controls
- 23. Как связать с индексом столбца Xceed DataGridControl
- 24. xceed Propertygrid - как использовать коллекцию свойств
- 25. XCeed PropertyGrid: Как установить правильный заголовок?
- 26. Как изменить размер календаря Xceed WPF DateTimePicker
- 27. Использование Xceed PropertyGrid Как использовать цвет
- 28. Xceed DataGrid Сбрасывает позицию ScrollBar
- 29. Категория Заказ в Xceed PropertyGrid
- 30. Xceed DataGrid QueryableSource и DbContext
я получил ошибку синтаксиса для строки 'IUIItemContainer foundCustomControl = (theCustomControl в CustomUIItem) .AsContainer()' 'говоря AsContainer' не доступен. – Bishoy
Обязательно используйте последнюю версию TestStack.White, метод AsContainer() был внутренним в более старой версии. – DLDR