开发者

Stuck on implementation of WebBrowser Control and working with AJAX responses

Here we go...

I am trying to create a bot to walk through various functions of a website I do not have control of. Initially, I thought it would be best to just connect to the database (MySql) that the site is tied to and make my associations there...The database is built so extensively that I can't make out where to point what to where how etc...It's beyond my (DBA)programmer casting... ;) So, my next idea was, create a bot...simple enough right? First hurdle, not everything on the page carries an ID...bring on the loops...

Got it.

Now I'm stuck with working with my data and page response.

I'm trying to fill out part of a form and perform an AJAX search. The problem is, there is no DocumentCompleted for this. And honestly, that isn't where my problem lies. I've tried using Thread.Sleep, Timers, etc...no avail.

// 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!
}

}


The actual browser control has a WebBrowser.OnDocumentCompleted event which you might need to hook into so that you can be alerted when the ajax call has returned back from the server.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜