当前位置:萝卜系统下载站 > 技术开发教程 > 详细页面

delphi中的web form提交

delphi中的web form提交

更新时间:2022-07-21 文章作者:未知 信息来源:网络 阅读次数:

    问题:使用delphi +twebbrowser进行页面访问的时候.如何最后提交填写的表单.

    一般应该是很简单的.

    procedure websubmit(WB: TWebBrowser; FieldName: string);
    var
      I: Integer;
      FormNr, ItemNr    : integer;
      TheForm           : Variant;
      o : Olevariant;

    begin
       //判断是否存在form对象
      if WB.OleObject.Document.All.Tags('FORM').Length = 0 then
      begin
        ShowMessage('Error: no FORM found on page');
        Exit;
      end;

      for FormNr := 0 to WB.OleObject.Document.Forms.Length - 1 do
      begin
             //取得每一个form对象
           TheForm := WB.OleObject.Document.Forms.Item(FormNr);

           for ItemNr := 0 to TheForm.Length - 1 do
          begin
          try
              //根据form对象中的的元素名确定是否是需要提交的那个按钮
          //form对象包括input,select button等
          //比如<input type=submit name='aaaa">
            //则name为  aaaa
               if TheForm.Item(ItemNr).Name = FieldName then
               begin
                         TheForm.Item(ItemNr).CLICK;  //模拟点击
               exit;  
               end;
          except
              Break;
          end;
        end;
      end;
    end;

    上面代码看起来很是正确,不过如果用户的按钮或者说button为:
    这个样子的.你会发现永远都不会给提交.
    为什么因为在msdn帮助中明确说明了上面的那个item不支持input type=image对象的.
    那如何才能提交那样的其实很简单改用以下代码.可以简化整个的提交过程

    procedure websubmit(WB: TWebBrowser; FieldName: string);
    var
      I: Integer;
      FormNr, ItemNr    : integer;
      TheForm           : Variant;
      o : Olevariant;

    begin
      if WB.OleObject.Document.All.Tags('FORM').Length = 0 then
      begin
        ShowMessage('Error: no FORM found on page');
        Exit;
      end;

    try
       //提交指定名字的标签
       Wb.oleobject.document.all.namedItem(FieldName).click;
       except
       exit;
       end;

    end;

    如此极大简化了提交同时也满足了所有可能标签的提交动作.
    一般而言使用twebbrowser来提交个人认为是一种比较好的方式.因为如果使用idhttp,可能出现用户页面需要通过调用script做一些处理后提交的问题.使用idhttp是无法捕获的.
    而使用twebbrowser则完全模拟一个用户的操作过程.可以减少对页面的分析难度.做到准确提交.

    不过在程序提交的时候还有一个问题必须要注意.如果程序本身还没有能运行完成也就是说twebbrowser的状态还没有complete的时候,千万不要通过程序提交那样会出现异常的.这点千万注意呀.

温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html