2010-07-25 5 views
4

J'essaie de trouver un AutomationElement dans une ligne particulière d'un GridView (donc il y a beaucoup d'éléments identiques). Je suis en train d'itérer sur les éléments de la rangée, et j'aimerais utiliser un comparateur pour voir si un élément particulier correspond à la condition que je lui passe. Je commence par de simples PropertyConditions.Comment puis-je savoir si un élément correspond à une PropertyCondition dans Microsoft UI Automation?

Voici mon test:

[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)); 
    } 
} 

Et voici le code:

public class ConditionMatcher : IMatchConditions 
{ 
    public bool Matches(AutomationElement element, Condition condition) 
    { 
     var propertyCondition = (PropertyCondition) condition; 
     return propertyCondition.Value.Equals(element.GetCurrentPropertyValue(propertyCondition.Property)); 
    } 
} 

Malheureusement, le test échoue. Le ControlType de l'élément racine (le bureau) est en effet ControlType.Pane, mais bizarrement le PropertyCondition.Value est "50033".

Des idées sur la façon dont je peux tester un PropertyCondition en dehors de FindFirst/FindAll?

(Ma solution est de créer mon propre type de condition et test à la place, mais j'aimerais vérifier que je ne suis pas malentendu quelque chose/faire quelque chose de stupide.)

Répondre

3

Je l'ai trouvé. Pas exactement évident, mais cela fonctionne à la fois pour les conditions d'appariement et de non-concordance. Merci à tous ceux qui ont regardé et réfléchi un peu. J'espère que cela aidera quelqu'un d'autre!

Questions connexes