Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WebBrowser-Control: Button ansprechen und klicken
Gogeta
myCSharp.de - Member



Dabei seit:
Beiträge: 152
Herkunft: Izmir

Themenstarter:

WebBrowser-Control: Button ansprechen und klicken

beantworten | zitieren | melden

Hallo,

ich habe eine GUI mit einem Webbrowser und zwei Buttons.
Button 1:


 private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("Internetseite");

            webBrowser1.Document.GetElementById("username").InnerText = "Name";
            webBrowser1.Document.GetElementById("password").InnerText = "PW+"; 
        }
Button zwei soll dann die eingaben einnehmen, also sich anmelden.
Auf der Seite befindet sich ein Button der jedoch nicht mit GetElementById angesprochen werden kann, da keine ID hinterlegt ist.

habe es dann damit probiert:

public void ClickButton(string type) {
    var button = myWebBrowser.Document.GetElementsByTagName("button")
             .Cast<HtmlElement>()
             .FirstOrDefault(m => m.GetAttribute("type") == type);
    if (button != null)
        button.InvokeMember("click"); 
}
Hat aber auch nichts gebracht (diesen snippet habe ich von: Finding and clicking a button with no ID within html code in WebBrowser)

Dann dachte ich mir ich kann ja dem Webbrowser sagen, dass er in die Pw textbox geht und dort ein "Enter"(tastendruck) vortäuscht um die Eingaben anzunehmen.

Doch weiß ich leider nicht wie ich das machen kann.

Ich hoffe jmd kann mir helfen :)

Lg
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Gogeta,

myWebBrowser.Document.GetElementsByTagName("button") ist schon richtig. Du musst dir aus der Liste dann nur den richtigen Button rausfischen. Dafür gibt viele Möglichkeiten, je nachdem, was noch so alles für Attribute in dem <button>-Tag stehen. Im Snippet wird davon ausgegangen, dass es ein Type-Attribut gibt. Du kannst aber auch nach der logischen Position des Button gehen. Wenn er der erste ist, also einfach auf den Index 0 in der Liste zugreifen.

Auf jeden Fall eine lösbare Aufgabe. Du bist ja nicht der erste, der vor dem Problem steht.

herbivore
private Nachricht | Beiträge des Benutzers
Somakia
myCSharp.de - Member



Dabei seit:
Beiträge: 269
Herkunft: Hessen

beantworten | zitieren | melden

Kleine Anmerkung, da ich öfter selbst mit diesem oder ähnlichen "Problemen" zu tun habe:
Ist der Button selbst auf der gesamten Webseite nicht eindeutig, so ist er es meist innerhalb seines Blocks (also Form, Div oder Ähnlichem) ... wenn diese eindeutig identifizierbar ist, findet man dann auch den Button...

Der Gedankengang dahinter:
Man arbeitet ähnlich einem XPath und sucht sozusagen den ersten eindeutigen nicht variablen Pfad zum Button selbst :)
private Nachricht | Beiträge des Benutzers