Ich versuche, ein .Net WebBrowser-Steuerelement zu verwenden, um mich auf einer Website anzumelden und einige Daten für mich zu sammeln. Ich verwende auch einen Verweis auf MSHTML (aber es ist mir egal, ob Ihre Lösung dies tut oder nicht).Verwendung von .Net Web Control - Wie man einen Wert in einem TextBox * INSIDE * eines IFRAME setzt
Wenn ich eine 'normale' Website besuche - erstelle ich ein mshtml.HTMLDocument aus der .documment des WebBrowsers. Dann erstelle ich ein mshtml.FormElement und ein mshtml.HTMLInputElement mit dem Namen des gewünschten Textfelds.
Dann kann ich den Wert der TextBox festlegen.
Es sieht ungefähr so aus:
Dim myDoc1 As mshtml.HTMLIFrame = DirectCast(Me.WebBrowser.Document.DomDocument, mshtml.HTMLDocument)
Dim myForm As mshtml.HTMLFormElement = DirectCast(myDoc1.forms.item(0), mshtml.HTMLFormElement)
Dim myUserBox As mshtml.HTMLInputElement = DirectCast(myForm.item("user"), mshtml.HTMLFormElement)
myUserBox.value = UserName
Mein Problem ist, dass die Textbox Ich brauche auf einigen Websites innerhalb eines IFRAME enthalten sind, zu manipulieren. Ein Beispiel wäre https://servicing.capitalone.com/c1/login.aspx
Wenn mein Programm zu dieser Website surft - es kann keine Textbox für den Benutzernamen finden - weil es keinen gibt. Es gibt nur ein IFRAME-Tag mit der URL 'https://login.capitalone.com/loginweb/login/login.do'
Wenn ich direkt auf die login.do-Seite surfe - die Website leitet mich auf eine Fehlerseite weiter.
Wie kann ich Daten in das Textfeld UserName in diesem IFRAME eingeben?
Also - es gibt keine Möglichkeit, sich programmatisch mit einem WebBrowser-Steuerelement in die Capital One Website einzuloggen? –
Ich konnte es nicht zur Arbeit bringen. Es gibt eine API für den Zugriff auf die iFrames, aber jedes Mal, wenn ich den untergeordneten Frame berührte, bekam ich eine Sicherheitsausnahme. –
Ich habe eine Lösung zusammengehackt. Ich benutze SendKeys, um ein paar Mal zu Tabstopps zu gelangen, bis ich mich im richtigen Feld befinde, und gebe dann einen Benutzernamen, einen Tab, ein Passwort, eine Registerkarte und den Absenden-Button ein. Aber das ist fehlerhaft und anfällig für Fehler. Wenn jemand anderes eine bessere Lösung hat, würde mich das interessieren :) –