public IEnumerable <INativeElement> GetElementsWithQuerySelector(ICssSelector selector, DomContainer domContainer) { var container = "document"; if (_element != null) { var elementTag = new ElementTag(_element.TagName); if (elementTag.Equals(new ElementTag("frame")) || elementTag.Equals(new ElementTag("iframe"))) { var frameHierarchy = _element.GetAttributeValue("data-watinFrameHierarchy"); container = frameHierarchy + ".document"; } else { var document = _element.AsHtmlElement.document; var result = new Expando(document).GetValue <string>("___WATINFRAMEHIERARCHY"); container = ""; if (result != null) { container = result; } if (!string.IsNullOrEmpty(container)) { container += "."; } container += _element.GetJavaScriptElementReference(); } } else { //container = CreateArray(); } domContainer.RunScript(new ScriptLoader().GetSizzleInstallScript()); var code = string.Format("document.___WATINRESULT = Sizzle('{0}', {1});", selector.Selector(true), container); domContainer.RunScript(code); return(new JScriptElementArrayEnumerator((IEDocument)domContainer.NativeDocument, "___WATINRESULT")); }
public static IEnumerable <WatiN.Core.Element> XPath(this IElementContainer elementContainer, string xpath) { DomContainer domContainer = null; // TODO: Test that contextNode works var container = "document"; var document = elementContainer as Document; if (document != null) { domContainer = document.DomContainer; } var element = elementContainer as WatiN.Core.Element; if (element != null) { container = element.NativeElement.GetJavaScriptElementReference(); domContainer = element.DomContainer; } if (domContainer == null) { return(Enumerable.Empty <WatiN.Core.Element>()); } if (domContainer.Eval("window.jsxpath") == "undefined") { var script = "window.jsxpath = { targetFrame: undefined, exportInstaller: false, useNative: true, useInnerText: true };" + Resources.javascript_xpath; domContainer.RunScript(script); } // TODO: This escaping will fail if the string is already escaped var code = string.Format("document.___WATINRESULT = document.evaluate('{0}', {1}, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);", xpath.Replace("'", @"\'"), container); domContainer.RunScript(code); return(from nativeElement in new JScriptXPathResultEnumerator((IEDocument)domContainer.NativeDocument, "___WATINRESULT") select ElementFactory.CreateElement(domContainer, nativeElement)); }
public IEnumerable <INativeElement> GetElementsWithQuerySelector(string selector, DomContainer domContainer) { domContainer.RunScript(new ScriptLoader().GetSizzleInstallScript()); var container = "document"; if (_element != null) { container = _element.GetJavaScriptElementReference(); if (new ElementTag(_element.TagName).Equals(new ElementTag("frame"))) { container = container + ".contentDocument"; } } var code = string.Format("document.___WATINRESULT = Sizzle('{0}', {1});", selector, container); domContainer.RunScript(code); return(new JScriptElementArrayEnumerator((IEDocument)domContainer.NativeDocument, "___WATINRESULT")); }
public IEnumerable<INativeElement> GetElementsWithQuerySelector(string selector, DomContainer domContainer) { domContainer.RunScript(new ScriptLoader().GetSizzleInstallScript()); var command = string.Format("window.Sizzle('{0}', {1})", selector, containerReference); var ffElements = GetElementArrayEnumerator(command); foreach (var ffElement in ffElements) { yield return ffElement; } }
public IEnumerable <INativeElement> GetElementsWithQuerySelector(ICssSelector selector, DomContainer domContainer) { domContainer.RunScript(new ScriptLoader().GetSizzleInstallScript()); var command = string.Format("window.Sizzle('{0}', {1})", selector.Selector(true), containerReference); var ffElements = GetElementArrayEnumerator(command); foreach (var ffElement in ffElements) { yield return(ffElement); } }
public IEnumerable<INativeElement> GetElementsWithQuerySelector(string selector, DomContainer domContainer) { var container = "document"; if (_element != null) container = _element.GetJavaScriptElementReference(); var code = string.Format("document.___WATINRESULT = Sizzle('{0}', {1});", selector, container); domContainer.RunScript(code); return new JScriptElementArrayEnumerator((IEDocument) domContainer.NativeDocument, "___WATINRESULT"); }
public IEnumerable<INativeElement> GetElementsWithQuerySelector(string selector, DomContainer domContainer) { domContainer.RunScript(new ScriptLoader().GetSizzleInstallScript()); var container = "document"; if (_element != null) { container = _element.GetJavaScriptElementReference(); if (new ElementTag(_element.TagName).Equals(new ElementTag("frame"))) container = container + ".contentDocument"; } var code = string.Format("document.___WATINRESULT = Sizzle('{0}', {1});", selector, container); domContainer.RunScript(code); return new JScriptElementArrayEnumerator((IEDocument) domContainer.NativeDocument, "___WATINRESULT"); }
public IEnumerable<INativeElement> GetElementsWithQuerySelector(ICssSelector selector, DomContainer domContainer) { var container = "document"; if (_element != null) { var elementTag = new ElementTag(_element.TagName); if (elementTag.Equals(new ElementTag("frame")) || elementTag.Equals(new ElementTag("iframe"))) { var frameHierarchy = _element.GetAttributeValue("data-watinFrameHierarchy"); container = frameHierarchy + ".document"; } else { var document = _element.AsHtmlElement.document; var result = new Expando(document).GetValue<string>("___WATINFRAMEHIERARCHY"); container = ""; if (result != null) container = result; if (!string.IsNullOrEmpty(container)) container += "."; container += _element.GetJavaScriptElementReference(); } } else { //container = CreateArray(); } domContainer.RunScript(new ScriptLoader().GetSizzleInstallScript()); var code = string.Format("document.___WATINRESULT = Sizzle('{0}', {1});", selector.Selector(true), container); domContainer.RunScript(code); return new JScriptElementArrayEnumerator((IEDocument) domContainer.NativeDocument, "___WATINRESULT"); }