Я пытаюсь найти элемент AutomationElement в определенной строке GridView (поэтому существует много идентичных элементов).Я перебираю элементы в строке и хотел бы использовать средство сопоставления, чтобы увидеть, соответствует ли конкретный элемент условию, которое я ему передаю.Я начинаю с простых PropertyConditions.
Вот мой тест:
[TestFixture]
public class ConditionMatcherBehaviour
{
[Test]
public void ShouldMatchAPropertyConditionByItsValue()
{
var conditionMatcher = new ConditionMatcher();
var condition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Pane);
Assert.True(conditionMatcher.Matches(AutomationElement.RootElement, condition));
}
}
А вот код:
public class ConditionMatcher : IMatchConditions
{
public bool Matches(AutomationElement element, Condition condition)
{
var propertyCondition = (PropertyCondition) condition;
return propertyCondition.Value.Equals(element.GetCurrentPropertyValue(propertyCondition.Property));
}
}
К сожалению, тест не пройден.ControlType корневого элемента (рабочего стола) действительно является ControlType.Pane, но причудливым свойством PropertyCondition.Value является «50033».
Есть идеи относительно того, как я могу проверить PropertyCondition вне FindFirst / FindAll?
(Мой обходной путь - создать свой собственный тип условия и проверить его вместо этого, но я хотел бы убедиться, что я не неправильно понимаю что-то или делаю что-то глупое.)