我试图在 GridView 的特定行中找到一个 AutomationElement(因此有许多相同的元素)。我正在迭代行中的元素,我想使用匹配器来查看特定元素是否与我传递给它的条件匹配。我从简单的 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”。
关于如何在 FindFirst / FindAll 之外测试 PropertyCondition 的任何想法?
(我的解决方法是创建自己的条件类型并对其进行测试,但我想检查一下我没有误解某事/做某事愚蠢。)