Как использовать AutomationProperties.Имя?
вопрос
может ли кто-нибудь объяснить (предпочтительно с примером кода), как AutomationProperties.Свойство Name используется программно и декларативно с XAML?
объяснение
Я понимаю, что кодированный конструктор пользовательского интерфейса в Visual Studio 2010, например, принимает имя окна как SearchProperty.
поскольку имя моего окна изменяется, я хотел бы иметь постоянный SearchProperty, который мой На закодированные тесты UI можно положиться.
в примере кода ниже я не хочу, чтобы заголовок окна был жестко закодирован как "свойства канала 1", так как это изменяется.
пример кода
[GeneratedCode("Coded UITest Builder", "10.0.30319.1")]
public class UIListViewPropertiesTable1 : WpfTable
{
public UIListViewPropertiesTable1(UITestControl searchLimitContainer) :
base(searchLimitContainer)
{
#region Search Criteria
this.SearchProperties[WpfTable.PropertyNames.AutomationId] = "listViewProperties";
this.WindowTitles.Add("Properties of Pipe 1");
#endregion
}
#region Properties
public WpfText NameOfComponent
{
get
{
if ((this.mNameOfComponent == null))
{
this.mNameOfComponent = new WpfText(this);
#region Search Criteria
this.mNameOfComponent.SearchProperties[WpfText.PropertyNames.Name] = "Pipe 1";
this.mNameOfComponent.WindowTitles.Add("Properties of Pipe 1");
#endregion
}
return this.mNameOfComponent;
}
}
#endregion
#region Fields
private WpfText mNameOfComponent;
#endregion
}
ссылки
вот пример: как: получить автоматизацию, работающую должным образом в списке или поле со списком WPF с привязкой к данным. Я не смог приспособить его к окну.
3 ответов
вы можете изменить присоединенное свойство AutomationProperties.Имя либо в XAML, используя:
AutomationProperties.Name = "новое имя"
или в код, используя:
.SetValue (AutomationProperties.NameProperty, "новое значение");
или
Свойство automationproperties.SetName(кнопка "новое значение");
вы можете передать заголовок окна в качестве параметра его родителю и установить этот параметр при инициализации.
Я делаю так и отлично работаю.
есть способ обойти это, но это немного некрасиво.
мы будем использовать тот факт, что proprty, который содержит ссылку на окно, кэшируется и не просматривается каждый раз.
класс uimap является частичным классом, и вы можете иметь код в uimap.cs-файл, который все еще считается частью класса uimap.
добавьте туда метод, который принимает в качестве параметра заголовок окна и выполняет поиск, и который помещает найденное окно в Свойство uilistviewpropertiestable1 сгенерированного кода.