Пример #1
0
            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;
            }
Пример #2
0
        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);
            }
        }