public void Bug_MI308_Reproduce(){ var selector = ".text p, .text div"; var xml = XElement.Parse("<div><div class='text'><div>a</div><p>b</p><span>z</span><p>c</p><div>d</div></div></div>"); var selectresult = new CssSelectorImpl().Select(xml,selector).ToArray(); Assert.AreEqual(4,selectresult.Length); Assert.AreEqual("abcd",string.Join("",selectresult.Select(_=>_.Value))); }
public void CanSelect(string source, string clause, IEnumerable<string> result, int count) { var cssSelector = new CssSelectorImpl(); var selected = cssSelector.Select(XElement.Parse(source), clause); Assert.AreEqual(count, selected.Count()); foreach (var i in selected.Select(_ => _.ToString())) { Assert.IsTrue(result.Contains(i)); } }
public void NormalUnifiedAndDefaultTest(string query,string[] eresult) { var us = new CssSelectorImpl(); var elements = us.Select(XElement.Parse(SAMPLE_HTML), query); var result = elements.Select(_ => _.ToString()).ToArray(); CollectionAssert.AreEquivalent(eresult,result); var ds = new DefaultSelector(); elements = ds.Select(XElement.Parse(SAMPLE_HTML), query); result = elements.Select(_ => _.ToString()).ToArray(); CollectionAssert.AreEquivalent(eresult, result); }
public void ZU608_Bug_Test() { var html = Assembly.GetExecutingAssembly().ReadManifestResource("zu608.html"); var selector = ".cl-center h1"; var xml = XElement.Parse(html); var center = xml.DescendantsAndSelf().Where(_ => _.Attr("class").Contains("cl-center")).ToArray(); //for (var i = 0; i < center.Length; i++) { // Console.WriteLine(".cl-center "+i); // Console.WriteLine("==========================================="); // Console.WriteLine(center[i]); // Console.WriteLine("==========================================="); //} Assert.True(center.Any(_=>_.Descendants().Any(__=>__.Name.LocalName=="h1"))); var css = new CssSelectorImpl(); var xpath = css.BuildXpath(selector); Console.WriteLine(xpath); var selectresult = new CssSelectorImpl().Select(xml, selector).ToArray(); Assert.AreEqual(1,selectresult.Length); Console.WriteLine(selectresult[0].Value); }
/// <summary> /// Возвращает класс, действительно выполняющий поиск элементов /// </summary> /// <param name="realquery"></param> /// <param name="reallanguage"></param> /// <returns></returns> protected virtual ISelectorImpl ResolveExecutor(string realquery, SelectorLanguage reallanguage) { switch (reallanguage) { case SelectorLanguage.XPath: return XPathSelector ?? (XPathSelector = new XPathSelectorImpl()); case SelectorLanguage.Regex: return RegexSelector ?? (RegexSelector = new RegexSelectorImpl()); case SelectorLanguage.Css: return CssSelector ?? (CssSelector = new CssSelectorImpl()); case SelectorLanguage.Custom: if (null == CustomSelectors) return null; return CustomSelectors.FirstOrDefault(_ => _.IsSupported(realquery)); default: return null; } }