Seite 1 von 1

Eingabefelder + Buttons in Frames lesen/schreiben/klicken

Verfasst: 19.12.2013 16:05
von HW-SW-Tüftler
Hallo,

momentan hänge ich an einem Problem im Zusammenhang mit Auslesen / Beschreiben von Formular-Feldern und dem Klicken von Buttons in Frame-basierten HTML-Seiten.
Während z.B. das Beschreiben eines Formular-Felds über die ID auf "normalen" HTML-Seiten mit folgendem Code problemlos funktioniert (für das Auslesen und Knöpfe-Betätigen benutze ich analog aufgebaute Lösungen, die auf Code-Schnipseln beruhen, die ich hier im Forum gefunden habe),

Code: Alles auswählen

Procedure.s PutElementText (idWebGadget.i, sKey.s, text.s) 
 
   Protected WebBrowser    .IWebBrowser2 = GetWindowLong_(idWebGadget, #GWL_USERDATA) 
   Protected Dispatch      .iDispatch 
   Protected Document      .IHTMLDocument3 
   Protected Element       .IHTMLElement 
   Protected InputElement  .IHTMLInputElement 
   Protected bstrValue     .i 
   Protected sValue        .s 
  
   If Not (WebBrowser\get_Document(@Dispatch) = #S_OK) 
      Dispatch\Release() 
      ProcedureReturn "" 
   EndIf 
   If Not (Dispatch\QueryInterface(?IID_IHTMLDocument3, @Document) = #S_OK) 
      Document\Release()    
      Dispatch\Release()    
      ProcedureReturn "" 
   EndIf 
   If Not (Document\getElementById(sKey, @Element) = #S_OK And Element) 
      Document\Release()    
      Dispatch\Release()    
      ProcedureReturn "" 
   EndIf 
   If Not (Element\QueryInterface(?IID_IHTMLInputElement, @InputElement) = #S_OK) 
      Element\Release()    
      Document\Release()    
      Dispatch\Release()    
      ProcedureReturn "" 
   EndIf 
    
   If Not (InputElement\put_Value(text) = #S_OK)
      Element\Release()    
      Document\Release()    
      Dispatch\Release()    
      ProcedureReturn 
   EndIf 
    
   InputElement\Release()    
   Element\Release()    
   Document\Release()    
   Dispatch\Release()    
    
EndProcedure
funktioniert dies bei Frame-basierten Seiten so (logischerweise) nicht.

Ich habe allerdings im MSDN bislang noch keinen Weg gefunden, wie ich über die diversen Interfaces, Methods und Properties an die INPUT-Text und -Submit-Felder in einem bestimmten Frame herankomme.
Geht man da am besten über das "IHTMLFramesCollection2"-Interface -> Item -> frame -> getElementsByTagName, usw... oder über das "IHTMLFrameElement3"-Interface und wie geht es da jeweils weiter?
Da ich mich mit diesen COM-Geschichten noch nicht gut auskenne :oops: , bin ich für jeden Gedankenanstoß in die richtige Richtung dankbar. Wie müßte man die Prozedur für Frames anpassen?
Viele Grüße
Markus

Re: Eingabefelder + Buttons in Frames lesen/schreiben/klicke

Verfasst: 23.12.2013 22:07
von True29
hi , ich hab so das das Gefühl als ob du dich da besser an ein Html Forum wendest ;)

Desweiteren wäre ein lauffähiges demo bestimmt nich schlecht.
Und was is dein Ziel mit dem ganzem ? eventuell is das herangehen falsch.
eventuell gibts ja ne einfache Möglichkeit mit einem PHP script ?

Grüße.

Re: Eingabefelder + Buttons in Frames lesen/schreiben/klicke

Verfasst: 23.12.2013 22:13
von Kiffi
True29 hat geschrieben:Desweiteren wäre ein lauffähiges demo bestimmt nich schlecht.
+1

Würde mir das schon gerne mal anschauen, aber ein entsprechendes
Test-Szenario aufzubauen, ist mir momentan zu zeitraubend.

Grüße ... Kiffi

Re: Eingabefelder + Buttons in Frames lesen/schreiben/klicke

Verfasst: 24.12.2013 02:33
von Sicro
Hallo HW-SW-Tüftler,

schau dir mal diesen Code an: http://forums.purebasic.com/english/vie ... 85#p284885
Dort werden Frames mit "get_frames()" angesprochen.