private List<IUiElement> GetAutomationElementsWithWalker(
IUiElement element,
string name,
string automationId,
string className,
string[] controlType,
bool caseSensitive,
bool onlyOneResult,
bool onlyTopLevel)
{
var resultCollection = new List<IUiElement>();
var walker =
new classic.TreeWalker(
classic.Condition.TrueCondition);
try {
IUiElement oneMoreElement = AutomationFactory.GetUiElement(walker.GetFirstChild(element.GetSourceElement() as classic.AutomationElement));
resultCollection = ProcessAutomationElement(
oneMoreElement,
name,
automationId,
className,
controlType,
caseSensitive,
onlyOneResult,
onlyTopLevel);
if ((onlyTopLevel || onlyOneResult) && (null != resultCollection) && resultCollection.Count > 0) {
return resultCollection;
} else if (null != resultCollection) {
WriteObject(this, resultCollection);
}
while (oneMoreElement != null) {
oneMoreElement = AutomationFactory.GetUiElement(walker.GetNextSibling(oneMoreElement.GetSourceElement() as classic.AutomationElement));
resultCollection = ProcessAutomationElement(
oneMoreElement,
name,
automationId,
className,
controlType,
caseSensitive,
onlyOneResult,
onlyTopLevel);
if ((onlyTopLevel || onlyOneResult) && (null != resultCollection) && resultCollection.Count > 0) {
return resultCollection;
} else if (null != resultCollection) {
WriteObject(this, resultCollection);
}
}
}
catch {}
walker = null;
return resultCollection;
}