delphi Webbrowser 实用代码收集


本文整理自网络,侵删。

 
1、禁止Webbrowes新窗口打开页面,强制在当前页面打开
  方法:放两个webbrowser控件,错码如下;

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var PpDisp: IDispatch;
  var Cancel: WordBool);
begin
  PpDisp := WebBrowser2.Application;
end;
 
procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
  const PDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  urlStr: string;
begin
  urlStr := string(URL);
  WebBrowser1.Navigate(urlStr ); 
  Cancel := True;
end;
取到全部连接
在USER 加入 MSHTML; 和 ActiveX;
procedure TForm1.Button2Click(Sender: TObject);
var
doc:IHTMLDocument2;
all:IHTMLElementCollection;
len,i:integer;
item:OleVariant;
begin
doc:=WebBrowser1 .Document as IHTMLDocument2;
all:=doc.Get_links;//doc.Links
len:=all.length;
 
for i:=0 to len-1 do begin
item:=all.item(i,varempty);//EmpryParam
memo1.lines.add(item.href);
end;
end;
 
/////////////////////////////////////////////////////////////////////////////////////////////////
取得网页的源代码
Memo1.Text:=WebBrowser1.OleObject.document.documentelement.innerhtml;
 
//////////////////////////////////////////////////////////////////////////////////////////////////
禁止广告弹出
 
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
cancel:=true
end;
 
//////////////////////////////////////////////////////////////////////////////////////////////
不需要弹出窗口直接进去
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
NewApp: TForm1;
begin
NewApp := TForm1.Create(Owner);
NewApp.Visible := true;
ppdisp := NewApp.webbrowser1.Application;
 
end
 
 
/////////////////////////////////////////////////////////////////////////////////////////////////
只读文字
 
procedure TForm1.Button1Click(Sender: TObject);
var
HTMLDocument: IHTMLDocument2;
begin
    HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
    Memo1.Text := HTMLDocument.body.innerText;
end;
 
///////////////////////////////////////////////////////////////////////////////////////////////////////
复制
uses Activex;
下面这些加在哪里都可以。
initialization 
oleinitialize(nil); 
finalization 
oleuninitialize;
//////////////////////////////////////////////////////////////////////////////////////////////////////
选择全部和复制
procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_PROMPTUSER, EmptyParam, EmptyParam);   //选择全部
 
WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_PROMPTUSER, EmptyParam, EmptyParam);       //拷贝到剪贴板
end;
 
提交表单中的下拉框和单选
uses mshtml;
 
var
HtmlDoc:IHTMLDocument2;
myitem:Olevariant;
i:integer;
begin
myitem := WebBrowser1.Document;
for i := 0 to myitem.all.length - 1 do
begin
if myitem.all.item(i).tagName = 'SELECT' then // 下拉框选择
begin
myitem.all.item(i).value:='2';                      // '2'系value="里的内容
end;
 
if myitem.all.item(i).tagName = 'INPUT' then
begin
if Uppercase(myitem.all.item(i).type)='RADIO' then
begin
if myitem.all.item(i).value='求' then myitem.all.item(i).checked:=true;
end;
end;
end;
end;  
 
var
o : Olevariant;
begin
o := WebBrowser.OleObject.document.all.item('LoginUserID',0); //找到登录用户名的输入框
o.value := 'TEST';
o := WebBrowser.oleobject.document.all.item('LoginPassword',0); //找到登录密码的输入框
o.value := 'TEST'
WebBrowser.oleobject.document.Forms.Item(0, 0).submit; //第一个表单提交
{
o :=WebBrowser.oleobject.document.all.item('Login',0); //或者用指定表单名称提交
o.Click; //点击操作,对其它对象也可同样操作
}
end;
 
调用JAVASCRIPT函数
WebBrowser1.OleObject.document.parentWindow.execScript('GSLogin()','javascript');
 
 
 
 
 
多个frames的输入,FrameIndex为Frame的序号 
 
var 
o : Olevariant; 
begin 
 
//找到登录用户名的输入框 
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FrameIndex).document.all.item('LoginUserID',0); 
o.value := 'TEST'; 
//找到登录密码的输入框 
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.all.item('LoginPassword',0); 
o.value := 'TEST' 
//第一个表单提交 
WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.Forms.Item(0, 0).submit; 
//或者用指定表单名称提交 
o :=WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex)..document.all.item('Login',0); 
o.Click; //点击操作,对其它对象也可同样操作 
end;
 
 
WebBrowser1.oleobject.Document.getElementById('button').Click;
 
 
///////////////////////////////////////////////////////////////////////////////////////
第1个item是女(0开始)
WebBrowser1.OleObject.document.getElementsByTagName('input').item(1).click;
或者用name,但name要唯一
WebBrowser1.OleObject.document.all.item('Registered1').click


判断Webbrowes里的Radio是否选中

   <input type="radio" name="typeTab" class="radio" checked="checked" val="1" gmmbettypeid="5300"/>
                                                        <label class="clickable">?^尾</label>
                                                    </th>
                                                    <th  id="type-tab2" class="align-l s-line tabitem clickable">
                                                        <input type="radio" name="typeTab" class="radio" val="2" gmmbettypeid="5100"/>
                                                        <label class="clickable">前定一</label>
                                                    </th>
                                                    <th  id="type-tab3" class="align-l s-line tabitem clickable">
                                                        <input type="radio" name="typeTab" class="radio" val="3" gmmbettypeid="5200"/>
                                                        <label class="clickable">前定二</label>
                                                    </th>
                                                    <th  id="type-tab4" class="align-l tabitem clickable">
                                                        <input type="radio" name="typeTab" class="radio" val="4" gmmbettypeid="5400"/>
                                                        <label class="clickable">中肚</label>
                                                    </th>
                                                    <th  id="type-tab5" class="align-l s-line tabitem clickable">
                                                        <input type="radio" name="typeTab" class="radio" val="5" gmmbettypeid="5500"/>
                                                        <label class="clickable">後定一</label>
                                                    </th>
                                                    <th  id="type-tab6" class="align-l tabitem clickable">
                                                        <input type="radio" name="typeTab" class="radio" val="6" gmmbettypeid="5600"/>
                                                        <label class="clickable">後定二</label>
                                                    </th>

if Web1.OleObject.document.Frames.item(0).document.all.item('typeTab',2).checked then



相关阅读 >>

Delphi获取当前计算机所有盘符

Delphi shellexecute 发送邮件

Delphi getvolumeinformation获取硬盘分区信息

Delphi编写你的第一个com程序

Delphi用idhttp.get访问一个网址返回403错误,但用ie浏览器访问正常

Delphi程序带参数运行

Delphi 7 中的随机函数

Delphi searchrec.attr and fadirectory

webbrowser里网页根据文字判断来点击链接

Delphi异常信息捕捉

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...