Həyat

TWebBrowser istifadə edərək veb formaları manipulyasiya edin

TWebBrowser istifadə edərək veb formaları manipulyasiya edin

TWebBrowser Delphi nəzarəti Delphi tətbiqlərinizdən Veb brauzerinizin işləməsinə təmin edir - xüsusi bir veb tarama tətbiqini yaratmağa və ya İnternet, fayl və şəbəkə gəzintisi, sənədlərə baxma və tətbiqlərinizə məlumat yükləmə imkanlarını əlavə etməyə imkan verir.

Veb formaları

A veb forması və ya a veb səhifədə forma bir veb səhifə ziyarətçisinə əksər hallarda emal üçün serverə göndərilən məlumatları daxil etməyə imkan verir.

Ən sadə veb forması birindən ibarət ola bilər giriş elementi (tənzimləmə nəzarəti) və a təqdim düyməsini basın. Əksər veb axtarış motorları (Google kimi) internetdə axtarış aparmaq üçün belə bir veb formasından istifadə edir.

Daha mürəkkəb veb formalarına açılan siyahılar, onay qutuları, radio düymələri və s. Veb veb forması mətn daxiletmə və seçim nəzarəti ilə standart bir Windows formasına bənzəyir.

Hər formaya bir düyməni - bir təqdim etmə düyməsini - brauzerdən veb forma (adətən onu veb-serverə emal üçün göndərmək üçün) tədbir görməyi tapşıran bir düymə daxil ediləcəkdir.

Proqram formalı veb formaları doldurur

Masaüstünüzdəki tətbiqetmədə veb səhifələri göstərmək üçün TWebBrowser-dən istifadə edirsinizsə, veb formaları proqramlı şəkildə idarə edə bilərsiniz: veb şəklinin sahələrini manipulyasiya, dəyişdirmək, doldurmaq, doldurmaq və təqdim etmək.

Budur, veb səhifədəki bütün veb formaları sadalamaq, giriş elementlərini əldə etmək, sahələri proqramatik şəkildə doldurmaq və nəhayət formanı göndərmək üçün istifadə edə biləcəyiniz xüsusi Delphi funksiyalar toplusu.

Nümunələri daha asan izləmək üçün deyək ki, Delphi (standart Windows) formasında "WebBrowser1" adlı TWebBrowser nəzarəti var.

Qeyd: əlavə etməlisiniz mshtml Burada sadalanan metodları tərtib etmək üçün istifadə bəndinə.

Veb Forma Adlarını siyahıya alın, İndekslə Veb Forması alın

Bir veb səhifənin əksər hallarda yalnız bir veb forması ola bilər, lakin bəzi veb səhifələrdə birdən çox veb forma ola bilər. Bir veb səhifədəki bütün veb formaların adlarını necə əldə etmək olar:

funksiyası WebFormNames (const sənəd: IHTMLDocument2): TStringList; var formaları: IHTMLElementCollection; forma: IHTMLFormElement; idx: tam; başlamaq formalar: = sənəd. IHTMLElementCollection kimi formalar; nəticə: = TStringList.Create;üçün idx: = 0 üçün -1 + formalar. uzunluq etmək   başlamaq forma: = form.item (idx, 0) IHTMLFormElement kimi; nəticə.Add (form.name);son; son;

Veb form adlarının siyahısını TMemo-da göstərmək üçün sadə bir istifadə:

var formaları: TStringList; başlamaq formalar: = WebFormNames (WebBrowser1.Document AS IHTMLDocument2);cəhd edin memo1.Lines.Assign (formalar);nəhayət formalar.Free;son; son;

Budur necə bir veb forması nümunəsini indekslə əldə edin. Tək bir forma səhifəsi üçün indeks 0 (sıfır) olardı.

funksiyası WebFormGet (const formNumber: tam; const sənəd: IHTMLDocument2): IHTMLFormElement; var formaları: IHTMLElementCollection; başlamaq formalar: = sənəd.Forms kimi IHTMLElement toplama; nəticə: = formalar.Item (formNumber, ") kimi IHTMLFormElement son;

Veb forması olandan sonra edə bilərsiniz bütün HTML giriş elementlərini adları ilə sadalayın, bacararsan sahələrin hər biri üçün dəyəri əldə edin və ya təyin edin, və nəhayət edə bilərsiniz veb formasını təqdim edin.

Veb səhifələr veb formaları düzəliş qutuları kimi giriş elementləri ilə idarə edə və Delphi kodundan proqramatik olaraq idarə və idarə edə biləcəyiniz siyahıları aça bilər.

Veb forması olandan sonra edə bilərsinizbütün HTML giriş elementlərini adları ilə sadalayın:

funksiyası WebFormFields (const sənəd: IHTMLDocument2;const formName:simli): TStringList;var forma: IHTMLFormElement; sahə: IHTMLElement; fName: simli; idx: tam;başlamaq forma: = WebFormGet (0, WebBrowser1.DocumentAS IHTMLDocument2); nəticə: = TStringList.Create;üçün idx: = 0üçün -1 + form.lengthetmək sahəsində başlamaq: = form.item (idx, ") IHTMLElement kimi;əgər sahə =nil sonra Davam et; fName: = alan.id;əgər field.tagName = 'Giriş'sonra fName: = (sahəkimi IHTMLInputElement) .name;əgər field.tagName = 'SELECT'sonra fName: = (sahəkimi IHTMLSelectElement) .name;əgər field.tagName = 'TEXTAREA'sonra fName: = (sahəkimi IHTMLTextAreaElement) .name; nəticə.Add (fName);sonson;

Bir veb şəklindəki sahələrin adlarını bildiyiniz zaman proqramatik şəkildə edə bilərsinizdəyəri almaq bir HTML sahəsi üçün:

funksiyası WebFormFieldValue (const sənəd: IHTMLDocument2;const formNumber: tam;const sahəName:simli): simlivar forma: IHTMLFormElement; sahə: IHTMLElement;başlamaq forma: = WebFormGet (formNumber, WebBrowser1.DocumentAS IHTMLDocument2); alan: = form.Item (fieldName, ") IHTMLElement olaraq;əgər sahə =nil sonra Çıx;əgər field.tagName = 'Giriş'sonra nəticə: = (sahəkimi IHTMLInputElement). Dəyər;əgər field.tagName = 'SELECT'sonra nəticə: = (sahəkimi IHTMLSelectElement). Dəyər;əgər field.tagName = 'TEXTAREA'sonra nəticə: = (sahəkimi IHTMLTextAreaElement). Qiymətləndirmə;son;

"URL" adlı giriş sahəsinin dəyərini əldə etmək üçün istifadə nümunəsi:

const FIELDNAME = 'url';var sənəd: IHTMLDocument2; sahəQiymət:simlibaşlamaq sənəd: = WebBrowser1. SənədAS IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines.Add ('Sahə: "URL", dəyər:' + fieldValue);son;

Əgər edə bilməsəniz, bütün fikirin heç bir dəyəri olmazdıveb forma elementlərini doldurun:

proseduru WebFormSetFieldValue (const sənəd: IHTMLDocument2;const formNumber: tam;const sahəName, yeni Qiymət:simli) ; var forma: IHTMLFormElement; sahə: IHTMLElement;başlamaq forma: = WebFormGet (formNumber, WebBrowser1.DocumentAS IHTMLDocument2); sahə: = form.Item (fieldName, ")kimi IHTMLElement;əgər sahə =nil sonra Çıx;əgər field.tagName = 'Giriş'sonra (sahəkimi IHTMLInputElement). Qiymət: = YeniDəyər;əgər field.tagName = 'SELECT'sonra (sahəkimi IHTMLSelectElement): = yeniDəyər;əgər field.tagName = 'TEXTAREA'sonra (sahəkimi IHTMLTextAreaElement): = yeniDəyər;son;

Veb Forması Göndərin

Nəhayət, bütün sahələr manipulyasiya edildikdə, çox güman ki, veb formanı Delphi kodundan göndərmək istərdiniz. Budur:

prosedur WebFormSubmit (const sənəd: IHTMLDocument2;const formNumber: tam);var forma: IHTMLFormElement; sahə: IHTMLElement;başlamaq forma: = WebFormGet (formNumber, WebBrowser1.DocumentAS IHTMLDocument2); form.submit;son;

Bütün Veb Formalar "Açıq Fikirləşir"

Bəzi veb formalarda veb səhifələrin proqramla idarə edilməməsinin qarşısını almaq üçün bir captcha görüntüsü ola bilər.

Bəzi veb formalar "təqdim düyməsini vurduğunuzda" təqdim olunmaya bilər. Bəzi veb formaları JavaScript tətbiq edir və ya digər prosedur veb formanın "onsubmit" hadisəsi ilə idarə olunur.

Hər halda, veb səhifələrə proqramlı nəzarət etmək olar, yeganə sual "nə qədər getməyə hazırlaşırsınız?"

Videoya baxın: Technology Stacks - Computer Science for Business Leaders 2016 (Aprel 2020).