none
WebBrowser lädt Seite nicht

    Frage

  • Hallo,

    #######################
     EDIT: Neues Projekt --> Funkt.#

    ich möchte, dass die Textbox von Google (ID: gbqfq) angeklickt wird / dort reingeschrieben wird.
    Mein Ansatz:

            private void cmdStart_Click(object sender, EventArgs e)
            {
                // WebBrowser Browser = new WebBrowser()
                Browser.Navigate("http://www.google.de");
                Browser.Document.GetElementById("gbqfq").InvokeMember("click");
                Browser.Document.GetElementById("gbqfq").SetAttribute("value", "Suche");
            }

    Allerdings bekomme ich immer die Meldung "Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
    [Ich bekomme immer die Meldung bei jeder GetElementById-Methode]
    Optisch erscheint die Seite im Browser, aber auch wenn ich die Seite als HTML-Document zwischenspeichern will, also

    HmtlDocument Doc = Browser.Document;

    wird Doc nur "null" zugewiesen und auch das Event

            private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                // Tritt nie ein
            }

    tritt nie ein, wird nie ausgelöst.
    Kann es also sein, das der WebBrowser die Seite [bei anderen Seiten genau das Selbe] falsch lädt?
    Und wie kann ich das Problem beheben?

    Grüße Patrick





    • Bearbeitet Patrick-K Samstag, 24. August 2013 20:31
    Samstag, 24. August 2013 18:52

Antworten

Alle Antworten

  • Hallo Patrick,

    wenn Du Navigate aufrufst, ist die Seite ja noch lange nicht geladen. Du solltest deinen Code daher im DocumentCompleted Ereignis unterbringen bzw. den von dort aus aufrufen.

      http://msdn.microsoft.com/de-de/library/system.windows.forms.webbrowser.documentcompleted.aspx

    Denn selbst wenn Du den Code geladen hättest, der von der entsprechenden Seite geliefert wird, ist das Dokument noch nicht fertig geladen. Google liefert hier ziemlich viel JavaScript Code, der das Dokument erst zusammenbaut. Und das musst Du für den Zugriff auf die erzeugten Element auch noch abwarten.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Patrick-K Sonntag, 25. August 2013 12:42
    Samstag, 24. August 2013 22:51
  • Danke, habs auch hingekriegt.
    Allerdings stehe ich jetzt vor einem anderen Problem:

                string Link = Browser.Document.GetElementById("id8b").GetAttribute("src");

    Link enthält nun eine URL [als string] von einem Bild.
    Wenn ich die URL von Link in die Adresszeile von Firefox eingebe, zeigt
    es mir das Bild an, auch "Grafik speichern" funkt problemlos.
    Aber wenn ich nun die URL des Bildes (Link) bei der PictureBox.ImageLocation - Eigenschaft
    eingebe, erscheint am Ende kein Bild, wieso?
    Auch das downloaden per WebClient funktioniert nicht,
    die Bilder sind am Ende immer nicht ansehbar.


    • Bearbeitet Patrick-K Sonntag, 25. August 2013 13:16
    Sonntag, 25. August 2013 13:15
  • Hallo Patrick,

    neue Fragen bitte beim nächsten mal in einem neuen Thread stellen. Das erhöht die Übersichtlichkeit immens und andere potientelle Beantworter werden eher auf noch nicht beantwortete Threads aufmerksam.

    Da ich nicht weiß, was id8b sein soll, wäre es hilfreich, wenn Du nicht einfach davon ausgehst, dass wir hier schon wissen werden, was Du da wohl meinst. Tun wir nicht.

    Poste daher bitte den exakten String, so wie Du ihn in der Variablen Link erhältst. Ohne den kann man da nichts sagen.

    Um ein Bild von einem URL aus in einer PictureBox anzuzeigen, schau dir mal diese Diskussion an:

      http://stackoverflow.com/questions/4071025/load-an-image-from-a-url-into-a-picturebox

    Das sollte dir helfen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 26. August 2013 08:49