private IEnumerable <IWebElement> FindMe() { WrappedDriver.WaitForAjax(_timeoutMs); _webElements = WebElementsCache.GetCachedElements(this.ToString()); if (IsStale()) { var stopwatch = Stopwatch.StartNew(); if (_container != null) { var root = _container.FindMe(); if (_frame != null) { Logger.Log($"Select frame {_frame}"); WrappedDriver.SwitchTo().Frame(_frame.FindMe()); } if (FindHidden) { Logger.Log($"Find {this}"); _webElements = root.FindElements(_by); } else { Logger.Log($"Find visible {this}"); _webElements = root.FindVisibleElements(_by); } } else { if (_frame != null) { Logger.Log($"Select frame {_frame}"); WrappedDriver.SwitchTo().Frame(_frame.FindMe()); } if (FindHidden) { Logger.Log($"Find {this}"); _webElements = WrappedDriver.FindElements(_by); } else { Logger.Log($"Find visible {this}"); _webElements = WrappedDriver.FindVisibleElements(_by); } } foreach (var ele in _webElements) { if (TestContext.CurrentContext.TestConfig.HighlightElements) { ele.Highlight(50, "red"); } } stopwatch.Stop(); Logger.Log($"Found {_webElements.Count()} Elements {_by} after {stopwatch.ElapsedMilliseconds} ms"); } _elements = new List <Element>(); int i = 1; foreach (var webele in _webElements) { var elem = new Element(webele, by, i); elem.WrappedElement = webele; _elements.Add(elem); WebElementCache.SaveElementToCache(webele, this.ToString(), i); i++; } WebElementsCache.SaveElementsToCache(_webElements.ToList(), this.ToString()); return(_webElements); }