在C#WebBrowser中引发onClick事件不起作用

时间:2019-04-08 21:25:47

标签: c# html web-scraping

我正在创建一个简单的网络广告。我希望它从特定网页下载数据。但是,单击div后会出现我想要的数据。我试图找到该div,在其上调用click事件,然后下载页面源(显示隐藏数据之后)。 javascript执行后,数据可能会显示在页面上。我必须将WebBrowser.ScriptErrorsSuppressed设置为true,因为会弹出太多错误。目前,我正在使用以下代码:

        WebBrowser browser = new WebBrowser();
        //Navigate etc...

        foreach (HtmlElement el in browser.Document.GetElementsByTagName("div"))
        {
             if (el.GetAttribute("className").ToString().Equals(className))
             {
                  el.InvokeMember("click");
                  foreach(HtmlElement child in el.Children)
                  {
                      child.InvokeMember("click");
                  }                  
             }
        }

        browser.Document.GetElementsByTagName("body")[0].InvokeMember("click");

        while (browser.ReadyState != WebBrowserReadyState.Complete)
        {
            Application.DoEvents();
            Debug.WriteLine("State: " + browser.ReadyState);
            System.Threading.Thread.Sleep(50);
        }

        string source = browser.DocumentText;

这不起作用。隐藏的数据不会显示。我尝试使用RaiseEvent代替InvokeMember,并将click更改为onclick。没事。 顺便说一句。代码会调用每个孩子的click,因为我不确定哪个孩子会显示数据。 有人知道出什么问题了吗?

0 个答案:

没有答案