Public oForm oForm = Createobject('htmForm') oForm.Show() Define Class htmForm As Form Top = 0 Left = 0 Height = 450 Width = 740 DoCreate = .T. Caption = "HTML sample" Name = "Form1" cHTML = "" FirstTime = .T. * This is IE control - you'd use webbrowser4 from gallery instead * just because it already has some checks, extra pem. ie: wouldn't need readystate part * for the sake of keeping code short here I directly use olecontrol itself Add Object htmlviewer As OleControl With ; Height = 500, ; Width = 800, ; Anchor=15, ; OleClass = 'Shell.Explorer' Procedure Init Lparameters tcUrl With Thisform.htmlviewer .Navigate2('http://www.juntatecnica.com/cursos/login/signup.php?lang=en_utf8') Do While .ReadyState # 4 && Wait for ready state Enddo This.FillTheTextBoxes() Endwith Endproc Procedure FillTheTextBoxes() Local loDocument loDocument = Thisform.htmlviewer.Object.Document loDocument.All("id_username").Value = 'Cetin' loDocument.All("id_password").Value = 'xyz' loDocument.All("id_email").Value = 'xyz@nowhere.com' loDocument.All("id_email2").Value = '' && intentionally empty to cause error on submit loDocument.All("id_firstname").Value = 'Alex' loDocument.All("id_lastname").Value = 'De Souza' loDocument.All("id_city").Value = 'Istanbul' loDocument.All("id_country").Value = 'BR' Messagebox('',0,'',5000) loDocument.All("id_submitbutton").Click() Endproc Procedure htmlviewer.BeforeNavigate2 Lparameters pdisp, url, Flags, targetframename, postdata, headers, Cancel Cancel = .T. Endproc Procedure htmlviewer.Refresh Nodefault Endproc EnddefinePS: If you are using google chrome then right click and select inspect element to walk the document model (others might have similar).