private static IEnumerable <IWebElement> JQueryFindElementsStartingFromCurrentFrame(WebContext context, string jquerySelector) { if (jquerySelector.ToUpper().Contains("[IFRAME=")) { var frames = Helpers.ExtractiFrameData(jquerySelector); foreach (var frame in frames) { if (!string.IsNullOrEmpty(frame.jQuerySelector)) { //Find the frame element. var iFrameElement = Helpers.JQueryFindElementsStartingFromCurrentFrame(context, frame.jQuerySelector).FirstOrDefault(); if (iFrameElement == null) { throw new NotFoundException("iframe could not be found given the following jquery selector: " + frame.jQuerySelector); } //Switch to the new frame context.Driver.SwitchTo().Frame(iFrameElement); Debug.WriteLine("JQueryFind: SwitchToFrame: {0}", (object)frame.jQuerySelector); } //Because we are jumping frames we don't care about the jQuery in between them.. Only the last one. jquerySelector = frame.jQuery; } } Debug.WriteLine("JQueryFind: $('{0}')", (object)jquerySelector); var elements = (IEnumerable <object>)context.ExecuteScript(@"return $(arguments[0]).get();", jquerySelector); return(elements.Cast <IWebElement>()); }