public WindowMain() { BrowserContext browserContext = BrowserContext.DefaultContext; Browser browser = BrowserFactory.Create(browserContext); browser.FinishLoadingFrameEvent += delegate(object sender, FinishLoadingEventArgs e) { if (e.IsMainFrame) { DOMDocument document = browser.GetDocument(); XPathResult result = document.Evaluate("count(//div)"); // If the expression is not a valid XPath expression or the document // element is not available, we'll get an error. if (result.IsError) { Console.WriteLine("Error: " + result.ErrorMessage); return; } // Make sure that result is a number. if (result.IsNumber) { Console.WriteLine("Result: " + result.Number); } } }; browserView = new WPFBrowserView(browser); Content = browserView; Width = 1024; Height = 768; this.Loaded += WindowMain_Loaded; }
private void button1_Click(object sender, RoutedEventArgs e) { DOMDocument document = browser.GetDocument(); //XPath expressions XPathResult resultNum = document.Evaluate("count(//div)"); XPathResult resultNumSpec = document.Evaluate("count(//div[@class='col-sm-4 prod-thumb'])"); XPathResult result = document.Evaluate("string( / html / body / div[2] / div[2] / div[1] / div[2] / div / div[1] / div[2] / h3 / a)"); XPathResult resultNodes = document.Evaluate("/ html / body / div[2] / div[2] / div[1] / div[2] / div / *"); //Check if XPath result type is correct if (resultNum.IsNumber && resultNumSpec.IsNumber) { label1.Content = "Quantity of all <div> = " + resultNum.Number; label2.Content = "Quantity of <div> with class 'col-sm-4 prod-thumb' = " + resultNumSpec.Number; } else { label1.Content = "Error"; label2.Content = "Error"; } //Check if XPath result type is correct if (result.IsString) { label3.Content = "Text from selected element: " + result.String; } else { label3.Content = "Error"; } //Check if XPath result type is correct if (resultNodes.IsIterator) { label4.Content = resultNodes.ResultType; } else { label4.Content = "Mistake"; } //Get list with DOMNodes var tmp = resultNodes.Iterator.Select(item => item.Node.Children); try { //Extract list with DOMNodes foreach (var item in tmp) { foreach (var item1 in item) { //Extract DOMNode from the list label4.Content = "Node type: " + item1.NodeType; label5.Content = "Node name: " + item1.NodeName; } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }