Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi formularfelder einer website ausfülle? (https://www.delphipraxis.net/978-formularfelder-einer-website-ausfuelle.html)

Christian Seehase 13. Jan 2003 23:39

Moin Jan,

das Problem mit den Exceptions in der IDE lässt sich abschalten:

Tools\Debugger Optionen\Sprach Exceptions
Bei Delphi Exceptions stoppen deaktivieren.

Jan 13. Jan 2003 23:48

aahh gut *einstellundzufriedensei*
bb
Jan

masters001 14. Jan 2003 12:59

Hi Jan
das Problem das die site noch nicht geladen ist hatte ich auch schon,
Ich hab das mit der Abfrage :
Code:
 if WebBrowser2.LocationURL=sms_Site then ...
dann gelöst
Das ganze steht bei mir auch noch in : ondocumentcomplete !
Aber mein Problem ist jetzt:
Code:
WebBrowser2.OleObject.document.forms.item(0).elements.item(sms_full_Number_field).value:=sms_full_Number;
Dieser Code: Mein Problem ist die Übergabe von sms_full_Number_field einem String in dem der Feldname gespeichert ist! wenn ich den Namen in '****' dareinschreibe funktioniert es aber so mit der Variable nicht!
Aber ich muss das bei mir mit einer Variable machen! sonst kann ich für jede site eine eigene Prozedure schreiben und das will ich nicht!
Oder z.B beim einloggen:
So gehts:
Code:
WebBrowser2.OleObject.document.forms.item(0).elements.item('frm_passwd').value:=login_pass;
So nicht:
Code:
WebBrowser2.OleObject.document.forms.item(0).elements.item(login_pass_field).value:=login_pass;
masters001

Jan 15. Jan 2003 10:48

Hallo masters001,

folgendes funktioniert bei mir einwandfrei:

Code:
procedure tform1.login;
var
  test:string;
  Webform : variant ;
begin
 test:='password';
 form1.WebBrowser1.OleObject.Document.Frames.item ('main').Document.Forms.item(0).Elements.item('username').value := labelededit1.text ;
 form1.WebBrowser1.OleObject.Document.Frames.item('main').Document.Forms.item(0).Elements.item(test).value := labelededit2.text ;
 WebForm := form1.WebBrowser1.OleObject.Document.Frames.item('main').Document.Forms.item(0);
 WebForm.submit;
end;
Ich hab' ich mal für dich umgesetzt, und logischerweise klappt das auch.
probier Du das auch mal so aus! Anscheinend hast du einfach den falschen string gespeichert.
Gruß
Jan

Jan 15. Jan 2003 11:03

Zitat:

Zitat von masters001
Hi Jan
das Problem das die site noch nicht geladen ist hatte ich auch schon,
Ich hab das mit der Abfrage :
Code:
 if WebBrowser2.LocationURL=sms_Site then ...
dann gelöst
Das ganze steht bei mir auch noch in : ondocumentcomplete !
masters001


Hi masters001,
Das klappt bei mir auch, aber da ich auf einer Seite mit frames arbeite, steh ich dumm da, weil folgendes:

Code:
showmessage(form1.WebBrowser1.OleObject.Document.Frames.item('main').locationURL);
nicht klappt.
Irgendwelche Vorschläge wie das mit frames klappt?
bb
Jan

masters001 15. Jan 2003 15:27

Kannst du nicht einfach nur diesen Frame (main) im WebBrowser laden?

Jan 17. Jan 2003 01:06

Zitat:

Zitat von masters001
Kannst du nicht einfach nur diesen Frame (main) im WebBrowser laden?

Hallo masters001,
Nein, leider nicht, weil es nen befehl gibt, mit dem man kontrollieren kann von wo ein Frame geladen wurde, und da das nicht unbedingt jeder wissen soll kommt das nicht gut.

masters001 25. Jan 2003 15:34

Ich hab jetzt ein Formular in dem 2 Submit Buttons sind!
Wenn ich mein Prog ausführe drückt es immer auf den falschen!
Wie kann ich erreichen das immer der richtige gedrückt wird?
Kann ich irgendwie durch die namen der buttons darauf zugreifen?
Vielen Dank

Jan 27. Jan 2003 06:20

Hallo masters001,
also das hab ich ja noch nie gesehen, dass ein Formular 2 submitbuttons hat, worin sollen die sich denn unterscheiden? Im Grunde ist ein submitbutton doch nur zum Abschicken eines Formulars, die Bedingungen werden in anderen Inputs und im Formularheader angegeben.
Es gibt da noch einen reset button zu Formularen, aber ich denke nicht, dass du den meinst. Versuch das Ganze mal mit dem klick() Befehl, den hab ich mal irgendwo gesehen, kann dir jetzt aber niocht genau sagen wie das läuft, schau mal auf www.swissdelphicenter.ch da gibts sowas.
Gruß
Jan

masters001 3. Feb 2003 18:08

Hi ich poste hier einfach nochmal den QT zu meinem Problem:
Code:
              <form action="/sms-versenden.html" enctype="x-www-form-urlencoded" method="post" name="form1">
                <input type="hidden" name="nr" value="49160§98645070">
                <input type="hidden" name="smstype" value="sms">
                <input type="hidden" name="werbung" value="0">
                <input type="hidden" name="msg" value="SDGCSG+FDSH+GFDS">
                <input type="submit" name="submit" value="<- Zurück">
              </form>
                     </td>
            <td>
              <form action="/sms-vorschau.html" enctype="x-www-form-urlencoded" method="post" name="form1">
                <input type="hidden" name="number" value="4916098645070">
                <input type="hidden" name="sender" value="004916091533611">
                <input type="hidden" name="smstype" value="sms">
                <input type="hidden" name="msg" value="SDGCSG+FDSH+GFDS">
                <input type="hidden" name="eintrag" value="49170§§§§">
                <input type="hidden" name="netz" value="49160">
                <input type="hidden" name="nummer" value="98645070">
                <input type="hidden" name="werbung" value="0">
                <input type="hidden" name="var_a" value="sms_ohne_ad">
                <input type="submit" name="submit" value="SMS jetzt verschicken">
              </form>
Kann man den Button der gedrückt werden soll nicht über sein Value definieren?
Also das ich den submit Button drücke, hier mit dem Value: "SMS jetzt verschicken"

masters001

Jan 4. Feb 2003 12:04

Hallo masters001,
wenn es dir darum geht zu unterscheiden welchen submitbutton du drückst, dann geht das ganz einfach, indem du einen anderen Form ansprinchst, in deinem Falle zum Beispiel hieße das dann:

Code:
form1.WebBrowser1.OleObject.Document.Forms.item(0).submit; {verschickt den 1. form}

//oder:

form1.WebBrowser1.OleObject.Document.Forms.item(1).submit;
{verschickt den 2. form}
Gruß
Jan

masters001 4. Feb 2003 17:43

Hi Jan
Vielen Dank funktioniert perfekt!
Ich kannte das bis jetzt nur so das man den namen des Forms als string übergibt.
Ich hab noch ne Frage hierzu:
Ist es möglich das man die Usernamen-Passwörter direkt an den Host schickt also die Site nicht erst laden muss.
Quasi einen WebBrowser simulieren der mit dem Host kommuniziert?

Jan 4. Feb 2003 18:08

Hallo masters001,
Du kannst dir, ohne die Loginseite geladen haben zu müssen einfach einen Link aus dem Formular zusammenbasteln, schau dir doch dazu einfach mal einen früheren Beitrag von mir in genau diesem thread hier an.
http://www.delphipraxis.net/viewtopi...r=asc&start=15 Mein erster Beitrag auf der Seite erklärt wie das funktioniert. Wenn Du diesen Link hast, kannst du damit natürlich machen was du willst. Du könntest mit dem link jetzt auch im Twebbrowser direkt navigieren, oder ihn irgendwie anders ansprechen.
Hoffe das hilft
Jan

masters001 4. Feb 2003 20:50

Hallo
Ich meinte damit eigentlich eine Methode um das mit delphi über winsock zu machen:
http://www.activevb.de/tipps/vb6tipps/tipp0051.html
Hier ist ein Beispiel wie man e-mails per winsock verschickt allerdings mit vb.
Ich suche noch ein tut oder ein Beispielcode wie man das mit delphi und websiten machen kann! Da es zu lange dauert wenn sich immer im WebBrowser die Site laden muss!
Vielen dank
masters001

Jan 5. Feb 2003 13:47

Hallo masters001,
Wo soll denn bitte ger Geschwindigkeitsvorteil herkommen, wenn du das ganze ohne twebbrowser machst? Eine Antwortseite wirst du ja immer bekommen, oder irre ich da? und diese Antwortseite runterzuladen oder in den Twebbrowser zu laden dürfte keinen großen Unterschied machen. Den Twebbrowser kannst du ja auch invisible stellen.
BB
Jan

masters001 10. Feb 2003 13:03

Ist es vielleicht auch möglich das Webseitenausfüllen mit der NMHTTP Komponente zu machen? Oder wozu ist diese Komponente eigentlich gut. Wenn ich das richtig sehe zeigt die ja kein Browserfenstern an!
masters001

masters001 2. Mär 2003 23:04

Hallo, ich möchte nun auf einen Button drücken der eigentlich ein Bild ist! Also hab ich folgenden Code gefunden:
Code:
WebDoc := WebBrowser1.Document as HTMLDocument;
WebImage := WebDoc.images.item(0, 0) as HTMLImg;
WebImage.click;
Jetzt liegt aber der Button auf den ich klicken möchte in einem speziellen Frame:
Ich hab das jetzt mal so versucht:
Code:
WebImage := WebBrowser1.OleObject.Document.Frames.item('NavLinks').document.images.item(0, 0) as HTMLImg;
WebImage.click
Leider funktioniert dieser Code jedoch nicht! Kann mir vielleicht jemand den Fehler im Code sagen? Oder ist es möglich über WebDoc direkt auf den Frame zuzugreifen?
Ich hab das mal so:
Code:
WebDoc := WebBrowser1.Document.Frames.item('NavLinks') as HTMLDocument;
WebImage := WebDoc.images.item(0, 0) as HTMLImg;
WebImage.click;
versucht aber das funktioniert leider auch nicht!

Vielen Dank
masters001

bart_home 6. Mär 2003 16:55

twebbrowser checkbox füllen
 
hallo

wie kann man beim twebbrowser checkboxen aktivieren und oder radiobuttons einer website ausfüllen???
und warum kann ich keinen text aus dem twebbrowser kopieren und irgendwoanders einfügen????

mfg bart

aaron 7. Mär 2003 08:11

zum beispiel:
Code:
if iInputElement.Get_value='18'
  then iInputElement.checked:=true ;

bart_home 7. Mär 2003 19:33

danke für die hilfe kenn mich aber leider noch ned so gut mit delphi aus.
wofür steht das input.element???
wo könnt ich nähere information zu oleobject finden????

danke pwb bart_home

aaron 7. Mär 2003 20:47

du musst das ganze in
Code:
uses
 mshtml;
und in
Code:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var iDoc: IHtmlDocument2;
  i: integer;
  ov: OleVariant;
  iDisp: IDispatch;
  iColl: IHTMLElementCollection;
  iInputElement: IHTMLInputElement;
begin
  WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
  if not assigned(iDoc) then begin
    ShowMessage('Keine Webseite geladen');
    Exit;
  end;
  ov := 'INPUT';
  IDisp := iDoc.all.tags(ov);
  if assigned(IDisp) then begin
    IDisp.QueryInterface(IHTMLElementCollection, iColl);
    if assigned(iColl) then begin
      for i := 1 to iColl.Get_length do begin
        iDisp := iColl.item(pred(i), 0);
        iDisp.QueryInterface(IHTMLInputElement, iInputElement);
        if assigned(iInputElement) then begin
          if iInputElement.Get_value='18'
           then iInputElement.checked:=true ;    
         end;
      end;
    end;
  end;
end;
informationen findest du hier: (ist aber nicht so einfach mit dem umsetzten)
http://msdn.microsoft.com/library/default.asp
und in vielen foren...
ich suche auch immer wie ein verückter :)

aaron 7. Mär 2003 20:51

bei yahoo gibt es auch eine sehr gute group
delphi-webbrowser-subscribe@yahoogroups.com

bart_home 8. Mär 2003 09:36

hallo

danke für die hilfe

tschau bart_home

masters001 24. Mär 2003 19:20

Ist es eigentlich auch möglich eine Javascript Variable im T-WebBrowser zu ändern? Denn in diesem Javascript gibt es ein onkeydown welches eine funktion aufruft die zählt wieviele zeichen noch frei sind. Da aber keine taste gedrückt wird wenn die site mit einem script ausgefüllt wird, kommt es zu einem error da die variable nicht mit einem Wert belegt ist.
Oder kann ich den cursor automatisch in das MessageFeld positionieren und automatisch z.B. zum Schluss die Leertaste drücken lassen, um die Variable zu belegen?

1.) kann man Javascript Variablen automatisch mit Werten belegen?
2.) Wie bringe ich den Cursor in ein Bestimmtes html objekt im TWEbBrowser?

Vielen Dank
masters001

Caption 5. Mai 2003 11:43

Zitat:

Zitat von aaron
zum beispiel:
Code:
if iInputElement.Get_value='18'
  then iInputElement.checked:=true ;

Hmmm....
Das sagt mir leider auch nicht viel!
Könntest du das näher beschreiben?

Mfg Caption :D

aaron 5. Mai 2003 11:54

es wird nach einem inputelement mit der value 18 gesucht, wenn das dann da ist wird's gecheckt, oder habe ich deine frage falsch verstanden? :spin:

Caption 5. Mai 2003 11:59

Zitat:

Zitat von aaron
es wird nach einem inputelement mit der value 18 gesucht, wenn das dann da ist wird's gecheckt, oder habe ich deine frage falsch verstanden? :spin:

Danke!

Meine nächste Frage: Wie kann ich Dropdown bzw. Comboboxes in einem Internet-Formular ausfüllen?

Mfg Caption :D

aaron 5. Mai 2003 12:13

beispiel
Formularfelder ausfüllen

Caption 5. Mai 2003 12:16

Zitat:

Zitat von aaron

Code:
The file that you were trying to access cannot be found on this server.
Error 404!

Mfg Caption :D

Edit: Jetzt funzts! THX!

Caption 5. Mai 2003 14:38

Nochmal danke für dein Beispiel-Project, aber ich kapier das nicht ganz!
Ich möchte die Dropdown Felder so änlich ausfüllen:

Code:
WebBrowser1.OleObject.document.forms.item(0).elements.item('name').value:='.......';
Allerdings funktioniert das nur bei HTML-Quellcode der folgendermaßen aufgebaut ist:

Code:
                  <select name="name">
            <option selected value="Select Your Category">Select Your Category</option>
                    <option value="internet">Internet</option>
                    <option value="finance">Finance</option>
                    <option value="entertainment">Entertainment</option>
                    <option value="shopping">Shopping</option>
                    <option value="gambling">Gambling</option>
                    <option value="games">Games</option>
</select>
Aber wenn der Dropdown-Source so aussieht geht nichts mehr:

Code:
                  <select name="name">
                    <option selected>Select Name</option>
<option>Martin</option>
<option>Patrick</option>
<option>Peter</option>
<option>Eli</option>
          </select>
Wie kann ich ^^solche^^ Dropdownboxes ausfüllen?

Mfg Caption :D

aaron 5. Mai 2003 14:51

Code:
         <select name="name">
<option selected>Select Name</option>
<option>Martin</option>
<option>Patrick</option>
<option>Peter</option>
<option>Eli</option>
          </select>
aber wenn du das so machst übergibst du keine values...und darum geht es doch, oder nicht?

Caption 5. Mai 2003 14:54

Zitat:

Zitat von aaron
Code:
         <select name="name">
<option selected>Select Name</option>
<option>Martin</option>
<option>Patrick</option>
<option>Peter</option>
<option>Eli</option>
          </select>
aber wenn du das so machst übergibst du keine values...und darum geht es doch, oder nicht?

Genau das ist mein Problem!!
Ich muss also die Options in der Dropdown-Box irgendwie anders auswählen!
Aber wie????

Mfg Caption :D

aaron 5. Mai 2003 15:35

warum nimmst du dann überhaupt ein listmenü?
mal eine frage, was macht es für einen sinn ein listmenü ohne value abzusckicken?

sorry, ich kann dir nicht sagen wie's ohne value geht...

aaron 5. Mai 2003 15:42

eine sache fällt mir noch dazu ein...
du könntest wenn es um eine seite im www geht:
a) diese erst in ein memo laden
b) mittels stringreplace deine daten in das list/menü "eintragen"
c) das formular submitten...

nur so als idee :spin:

Caption 6. Mai 2003 18:42

Zitat:

Zitat von aaron
eine sache fällt mir noch dazu ein...
du könntest wenn es um eine seite im www geht:
a) diese erst in ein memo laden
b) mittels stringreplace deine daten in das list/menü "eintragen"
c) das formular submitten...

nur so als idee :spin:

Wär einen Versuch wert!
Aber es muss doch anders auch gehen!
z.b. so irgendwie:

Code:
WebBrowser1.OleObject.document.forms.item(0).elements.item('name').option(1)
Wobei ^^das^^ nicht funzt!

Mfg Caption :D

Wolverine 4. Jun 2003 16:31

Hallo alle zusammen.
Ich hab da immer noch ein Problem, auch nach dem ich alle Eure Varianten ausprobiert habe und selber rumgespielt habe!!!
Hier mal der Quellcode der Seite:
Code:
<table width="100%" border="0" bgcolor="<? print $T_tabelle; ?>";
<tr>
<td>[b]<div align="center"><? print $ub_font; ?>[b]<? print $MSG_6007; ?></div>[/b]</td>
</tr>
</table>
<FORM NAME="login" ACTION="main.php" METHOD="post">
<input type="hidden" name="action" value="login">
<TABLE width="100%" border="2" cellspacing="0" cellpadding="3" bordercolor="<? print $T_tabelle; ?>">
           <TR valign="top">
            <TD height="16" width="16%"> <FONT FACE=Courier,Courier New
                  SIZE=-3>Username:
            </TD>
            <TD height="16" width="84%">
              <INPUT type="text" name="nickH" size="8" MAXLENGTH="20" value="<?echo$nickH;?>">
            </TD>
          </TR>
          <TR valign="top" >
            <TD height="16" width="16%"> <FONT FACE=Courier,Courier New
                  SIZE=-3 
                  >Password:
            </TD>
            <TD height="16" width="84%">
              <INPUT type="password" name="password" size="8" MAXLENGTH="20">
            </TD>
          </TR>
          <TR valign="top">
            <TD height="16" colspan="2"><FONT FACE=Verdana,Arial,Helvetica SIZE=1> [url="my_account_login.php"]Passwort vergessen?[/url]
            </TD>
          </TR>
          <TR valign="top">
            <TD height="16" width="16%"> </TD>
            <TD height="16" width="84%">
              <INPUT type="submit" value="Einlogen!">
            </TD>
          </TR>
        </TABLE>
</FORM>
<table width="100%" border="0">
<tr>
<td>[b]<center>Sie sind nicht eingeloggt[/b]</font>
</center></td>
</tr>
</table>
Es handelt sich um PHP & HTML, wie es wohl unschwer zu erkennen ist :wink:.
Nun ist mein Prob, das es wie schon oben gesagt mit Euren Versionen nicht funzt :cry:
What is wrong and what do i have to do?

Cluxie 3. Nov 2003 12:53

Re: formularfelder einer website ausfülle?
 
Hallo,

Ich habe diesbezüglich auch noch eine Frage.
Es wurde in diesem Beitrag bereits darauf eingegangen was man bei einer Internetseite mit Frames schreiben muss um eine Aktion durchzuführen:

Delphi-Quellcode:
if WebBrowser1.OleObject.Document.Frames.item('MAIN').Document then
begin
  ...
end;
Dies stand irgendwo auf Seite 2 ...

Meine Frage bezieht sich dahingehend was man bei bei einer normalen Webseite ohne Frames beachten muss wenn man zum Beispiel eine Combobox ausblenden möchte, nachdem eine bestimmte Webseite aufgerufen wurde.

Nochmal vereinfacht:

Webbrowser Seite 1 wird aufgerufen
Formular wird mit Hilfe von Werten aus einer INI unter zur Hilfenahme einer Combobox ausgefüllt
der Webbrowser ruft eine weitere Seite auf
JETZT soll die Combobox ausgeblendet werden - nur wie ?

Wäre für einen Rat dankbar

Cluxie

Cluxie 3. Nov 2003 14:45

Re: formularfelder einer website ausfülle?
 
meine Prozedur schaut im Übrigen so aus

Delphi-Quellcode:
procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
   if WebBrowser1.LocationName = ('...hier steht die meine url...') then
   Spielerkonten_combobox.visible:=false;
end;
Wie gesagt, dieser Code tut nicht das was er soll und ich bin mir ziemlich sicher, daß es daran liegt, das er falsch ist *g*

Cluxie 4. Nov 2003 07:29

Re: formularfelder einer website ausfülle?
 
Hat sich erledigt , LocationURL nicht Name :)

Balu der Bär 26. Mai 2006 11:01

Re: formularfelder einer website ausfülle?
 
Moin,

ich hab da jetzt ein kleines Problem:

Ich möchte gern auf das Webmenü meines Routers zugreifen, also hab ich einfach euren Code aus diesem Thread verwendet.
Das funktioniert auch wunderbar, dass Passwortfeld wird wie erwartet korrekt ausgefüllt, leider kommt danach immer eine Exception. Weiß jemand warum ? :gruebel:

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Webbrowser1.Navigate('http://192.168.2.1/start_passwort.htm');

end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
 error: String;
begin
try
 WebBrowser1.OleObject.Document.Frames.item('ppst').Document.Forms.item('PWD').Elements.item('Pass').value := '0000'
except error := 'Fehler';
end;
end;
Danke schonmal ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz