public static IEnumerable <WinceComponent> FindElements(WinceApplication app, string strategy, string value, string startElementID) { IEnumerable <WinceComponent> elements = null; var components = app.CurrentWindow.Elements(); if (string.IsNullOrEmpty(value)) { throw new ArgumentException("value"); } switch (strategy) { case "css selector": var ops = new NodeOps(); var eval = new Evaluator <WinceComponent>(ops); elements = eval.Evaluate(value, components); break; case "tag name": elements = app.CurrentWindow.ListElements(c => c.TagName() == value); break; case "link text": elements = app.CurrentWindow.ListElements(e => { var txt = GetElementText(e); return(txt == null ? false : txt == value); }); break; case "partial link text": elements = app.CurrentWindow.ListElements(e => { var txt = GetElementText(e); return(txt == null ? false : txt.Contains(value)); }); break; default: throw new ArgumentException("strategy"); } return(elements); }