坚持实施WebBrowser Control并使用AJAX响应

时间:2011-02-14 20:18:32

标签: c# ajax browser

我们走了......

我正在尝试创建一个机器人来浏览我无法控制的网站的各种功能。最初,我认为最好只连接到该网站所绑定的数据库(MySql)并在那里建立我的关联...数据库是如此广泛构建,我无法弄清楚在哪里指向哪里到哪里如何...这超出了我的(DBA)程序员铸造......;) 所以,我的下一个想法是,创建一个机器人...简单对吧?第一个障碍,不是页面上的所有内容都带有ID ......带上循环......

知道了。

现在我不得不处理我的数据和页面响应。

我正在尝试填写表单的一部分并执行AJAX搜索。问题是,没有DocumentCompleted。老实说,这不是我的问题所在。我尝试过使用Thread.Sleep,Timers等等......但没有用。

// The app reads categories from a csv file, 
// then performs a search for the category
// Search results are only displayed if I break the foreach loop
foreach (var item in bar)
{
var document = wbBrowser.Document;
if (document != null)
{
    var name = document.GetElementById("product_filter_name");
    if (name != null)
    {
        name.SetAttribute("value", item.Key.ToString());

        var buttons = document.GetElementsByTagName("button");
        foreach (HtmlElement button in buttons)
        {
            var findSearch = button.InnerHtml.IndexOf("Search");

            if (findSearch > -1)
            {
                button.InvokeMember("click");
            }
        }
    }

    // This where the problem starts...
    // I want the AJAX to run, then perform Step two,  
    // but the WebBrowser doesn't return the search 
    // results until the end (break;)
    // Step Two

    var elems = document.GetElementsByTagName("tr");
    foreach (HtmlElement elem in elems)
    {
        // find particular item in result table
    }

    break;

    // Now the search results display!!!!
    // I tried implementing a timer, Thread.Sleep,
    // everything I could find via Google before 
    //starting Step Two, but it hasn't worked!
}

}

1 个答案:

答案 0 :(得分:0)

实际的浏览器控件有一个WebBrowser.OnDocumentCompleted事件,您可能需要挂钩,以便在ajax调用从服务器返回时可以收到警报。