Vyplnenie / odoslanie formulárov pomocou „TWebBrowser“ v Delphi

click fraud protection

TWebBrowser Ovládanie Delphi poskytuje prístup k funkcii webového prehľadávača z vašich aplikácií Delphi - umožňuje vám vytvárať prispôsobený web prehliadač aplikácie alebo pridať do internetu prehliadanie súborov, súborov a sietí, prezeranie dokumentov a sťahovanie dát aplikácie.

Webové formuláre

webový formulár alebo a na webovej stránke umožňuje návštevníkovi webovej stránky zadávať údaje, ktoré sa vo väčšine prípadov odosielajú na server na spracovanie.

Najjednoduchší webový formulár by mohol pozostávať z jedného vstupný prvok (úprava kontroly) a a Predložiť Tlačidlo. Väčšina webových vyhľadávacích nástrojov (napríklad Google) používa takýto webový formulár, ktorý vám umožní prehľadávať internet.

Zložitejšie webové formuláre zahŕňajú rozbaľovacie zoznamy, začiarkavacie políčka, prepínače atď. Webový formulár je podobný štandardnému formuláru systému Windows s ovládacími prvkami zadávania textu a výberu.

Každý formulár by obsahoval tlačidlo - tlačidlo odoslania - ktoré povie prehľadávaču, aby podnikol kroky vo webovom formulári (zvyčajne ho pošle na spracovanie na webový server).

instagram viewer

Programovo vyplnenie webových formulárov

Ak vo svojej desktopovej aplikácii používate TWebBrowser na zobrazenie webových stránok, môžete programovo ovládať webové formuláre: manipulovať, meniť, vyplňovať, vyplniť polia webového formulára a odoslať ho.

Tu je zbierka vlastných funkcií Delphi, pomocou ktorých môžete zobraziť zoznam všetkých webových formulárov na webovej stránke, načítať vstupné prvky, programovo vyplniť polia a konečne odoslať formulár.

Ak chcete ľahšie sledovať príklady, povedzme, že vo formulári Delphi (štandardný Windows) je ovládací prvok TWebBrowser s názvom „WebBrowser1“.

Poznámka: mali by ste pridať MSHTML na použitie, aby ste zostavili metódy uvedené v tomto dokumente.

Zoznam názvov webových formulárov, získanie webového formulára podľa indexu

Webová stránka by vo väčšine prípadov mala iba jeden webový formulár, ale niektoré webové stránky môžu mať viac ako jeden webový formulár. Tu je postup, ako získať názvy všetkých webových formulárov na webovej stránke:

funkcie WebFormNames (const dokument: IHTMLDocument2): TStringList; var formy: IHTMLElementCollection; forma: IHTMLFormElement; idx: celé číslo; začať forms: = document. Formuláre ako IHTMLElementCollection; result: = TStringList. vytvorenie; pre idx: = 0 na -1 + formy dĺžka robiťzačať form: = forms.item (idx, 0) ako IHTMLFormElement; vyplývať. Pridať (form.name); koniec; koniec; 

Jednoduché použitie na zobrazenie zoznamu názvov webových formulárov v TMemo:

var formy: TStringList; začať forms: = WebFormNames (WebBrowser1.Document AS IHTMLDocument2); vyskúšať memo1.Lines. Priradiť (formy); konečne formy. Zadarmo; koniec; koniec; 

Tu je návod získajte inštanciu webového formulára indexom. Pre jednu stránku formulára by index bol 0 (nula).

funkcie WebFormGet (const formNumber: integer; const dokument: IHTMLDocument2): IHTMLFormElement; var formy: IHTMLElementCollection; začať forms: = document. formuláre ako IHTMLElementCollection; result: = forms. Položka (formNumber, '') ako IHTMLFormElement. koniec; 

Akonáhle budete mať webový formulár, môžete zoznam všetkých vstupných prvkov HTML podľa ich názvu, môžeš získať alebo nastaviť hodnotu pre každé z polía nakoniec môžete odošlite webový formulár.

Webové stránky môžu hostiť webové formuláre so vstupnými prvkami, ako sú editovacie polia a rozbaľovacie zoznamy, ktoré môžete programovo ovládať a manipulovať s kódom Delphi.

Akonáhle budete mať webový formulár, môžete zoznam všetkých vstupných prvkov HTML podľa ich názvu:

funkcie WebFormFields (const dokument: IHTMLDocument2; const jmeno_form: povrázok): TStringList; var forma: IHTMLFormElement; pole: IHTMLElement; fName: string; idx: celé číslo; začať forma: = WebFormGet (0, WebBrowser1.Document AS IHTMLDocument2); result: = TStringList. vytvorenie; pre idx: = 0 na -1 + form.length robiť začiatočné pole: = form.item (idx, '') ako IHTMLElement; ak field = potom nič Ďalej; fName: = field.id; ak field.tagName = 'INPUT' potom fName: = (pole ako IHTMLInputElement) .name; ak field.tagName = 'SELECT' potom fName: = (pole ako IHTMLSelectElement) .name; ak field.tagName = 'TEXTAREA' potom fName: = (pole ako IHTMLTextAreaElement) .name; vyplývať. Pridať (fName); koniec; koniec;

Ak poznáte názvy polí vo webovom formulári, môžete to urobiť programovo získať hodnotu pre jedno pole HTML:

funkcie WebFormFieldValue ( const dokument: IHTMLDocument2; const formNumber: integer; const názov poľa: povrázok): povrázok; var forma: IHTMLFormElement; pole: IHTMLElement; začať forma: = WebFormGet (formNumber, WebBrowser1.Document AS IHTMLDocument2); field: = form. Položka (fieldName, '') ako IHTMLElement; ak field = potom nič Východ; ak field.tagName = 'INPUT' potom result: = (pole ako IHTMLInputElement) .Value; ak field.tagName = 'SELECT' potom result: = (pole ako IHTMLSelectElement) .Value; ak field.tagName = 'TEXTAREA' potom result: = (pole ako IHTMLTextAreaElement) .Value; koniec;

Príklad použitia na získanie hodnoty vstupného poľa s názvom „URL“:

const FIELDNAME = 'url'; var doc: IHTMLDocument2; fieldValue: povrázok; začať doc: = WebBrowser1.Document AS IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Pridať ('Pole:' URL ', hodnota:' + fieldValue);koniec;

Celý nápad by nemal žiadnu hodnotu, ak by ste to neboli schopní vyplňte prvky webového formulára:

procedúra WebFormSetFieldValue (const dokument: IHTMLDocument2; const formNumber: integer; const fieldName, newValue: povrázok); var forma: IHTMLFormElement; pole: IHTMLElement; začať forma: = WebFormGet (formNumber, WebBrowser1.Document AS IHTMLDocument2); field: = form. Položka (fieldName, '') ako IHTMLElement; ak field = potom nič Východ; ak field.tagName = 'INPUT' potom (lúka ako IHTMLInputElement) .value: = newValue; ak field.tagName = 'SELECT' potom (lúka ako IHTMLSelectElement): = newValue; ak field.tagName = 'TEXTAREA' potom (lúka ako IHTMLTextAreaElement): = newValue; koniec;

Odošlite webový formulár

Nakoniec, keď sa manipuluje so všetkými poľami, pravdepodobne by ste chceli odoslať webový formulár z kódu Delphi. Tu je postup:

postup WebFormSubmit ( const dokument: IHTMLDocument2; const formNumber: celé číslo); var forma: IHTMLFormElement; pole: IHTMLElement; začať forma: = WebFormGet (formNumber, WebBrowser1.Document AS IHTMLDocument2); form.submit; koniec;

Nie všetky webové formuláre sú „otvorené“

Niektoré webové formuláre môžu hostiť obrázok captcha, aby zabránili programovej manipulácii s webovými stránkami.

Po kliknutí na tlačidlo odoslania sa niektoré webové formuláre nemusia odoslať. Niektoré webové formuláre vykonávajú JavaScript alebo sa iná procedúra spracuje pomocou udalosti „onsubmit“ vo webovom formulári.

V každom prípade je možné webové stránky ovládať programovo. Jedinou otázkou je „ako ďaleko ste pripravení ísť?“

instagram story viewer