Wie aktualisiere ich die WebBrowser-Elemente?



  • Hi,

    ich habe folgendes Problem:

    Ich möchte bestimmte Daten von einer Internetseite auslesen, was auch klappt mit
    meinen Methoden:

    private string getInnerText(HtmlElementCollection elements, string attribute, string attributeValue)
            {
                foreach (HtmlElement element in elements)
                {
                    string tmp = element.GetAttribute(attribute);
                    if (tmp.Contains(attributeValue))
                    {
                        return element.InnerText.ToString();
                    }
                }
                return "";
            }
            private string getInnerText(HtmlElementCollection elements, string attribute, string attributeValue, string attribute2, string attributeValue2)
            {
                foreach (HtmlElement element in elements)
                {
                    string tmp = element.GetAttribute(attribute);
                    if (tmp.Contains(attributeValue))
                        return getInnerText(element.Children, attribute2, attributeValue2);
    
                }
                return "";
            }
            private string getInnerText(HtmlElementCollection elements, string attribute, string attributeValue, string attribute2, string attributeValue2, string attribute3, string attributeValue3)
            {
                foreach (HtmlElement element in elements)
                {
                    string tmp = element.GetAttribute(attribute);
                    if (tmp.Contains(attributeValue))
                        return getInnerText(element.Children, attribute2, attributeValue2, attribute3, attributeValue3);
    
                }
                return "";
            }
    

    Doch wenn ich jetzt z.B in meiner Form einen Button habe, der erst einen Button auf der Seite klicken soll mit:

    private void clickButon(HtmlElementCollection elements, string attribute, string attributeValue)
            {
                foreach (HtmlElement element in elements)
                {
                    string tmp = element.GetAttribute(attribute);
                    if (tmp.Equals(attributeValue))
                    {
                        element.InvokeMember("click");
                    }
                }
            }
            private void clickButon(HtmlElementCollection elements, string attribute, string attributeValue, string attribute2, string attributeValue2)
            {
                foreach (HtmlElement element in elements)
                {
                    string tmp = element.GetAttribute(attribute);
                    if (tmp.Equals(attributeValue))
                    {
                        clickButon(element.Children, attribute2, attributeValue2);
                    }
                }
            }
    

    Und direkt danach die Daten ausgelesen werden sollen, bekomme ich nur Daten, die von der letzten Seite stammen (also vor dem Klicken).
    Wenn ich das Klicken und das Auslesen auf 2 verschiedene Buttons lege, dann funktioniert es einwandfrei.

    Kann mir jemand sagen, wie ich den webbrowser "aktualisiert" bekomme, dass die neuen Daten für mich zur Verfügung stehen?



  • Also ich denke Du musst eben das Event abfangen, sobald der Webbrowser die neue Seite vollständig geladen hat. So hab ich das jedenfalls mal gemacht und da funktionierte es.


Anmelden zum Antworten