zoukankan      html  css  js  c++  java
  • WebBrowser里网页根据文字判断来点击链接 无Name及ID时

    uses  ActiveX, ComObj, MSHTML;
    
     
    
    根据连接文字点击连接-    一般情况下的连接 
    
    Procedure HTMLClinkByText(text:string;Wbr:TWebBrowser);
    var
        doc:IHTMLDocument2;
        len,I:integer;
        item:OleVariant;
        all:IHTMLElementCollection;
    begin
        doc:=Wbr.Document as IHTMLDocument2;
        all:=doc.Get_links;
        len:=all.length;
        for I:=0 to len-1 do
         begin
           item:=all.item(I,varempty);
           if pos (text,item.InnerText)>0 then      //判断连接文字包含内容
              begin
                Wbr.Navigate(item.href);
              end;
         end;
    end;
    
     
    
    使用的时候,要点击包含"联系"这两个字的链接
    
    HTMLClinkByText('联系',WebBrowser1);
    
     
    
    ----------------------------------------------------------------------------------------------
    
    Iframe 里面的连接点击
    
    
    function   GetFrame(FrameNo: Integer): IWebbrowser2;
    var
    OleContainer: IOleContainer;
    enum: IEnumUnknown;
    unk: IUnknown;
    Fetched: PLongint;
    begin
    while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
    Application.ProcessMessages;
    if Assigned(Webbrowser1.document) then
    begin
    Fetched := nil;
    OleContainer := Webbrowser1.Document as IOleContainer;
    OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
    Enum.Skip(FrameNo);
    Enum.Next(1, Unk, Fetched);
    Result := Unk as IWebbrowser2;
    end
    else
    Result := nil;
    end;
    
     
    
    procedure TForm1.Button4Click(Sender: TObject);
    var
    doc,frm:IHTMLDocument2;
    iw:IWebbrowser2;
    i,j,len: integer;
    all:IHTMLElementCollection;
    item:OleVariant;
    begin
    doc:=Webbrowser1.Document as IHTMLDocument2;
    for i:=0 to doc.frames.length-1 do
    begin
    iw:=GetFrame(i);
    frm:=iw.Document as IHTMLDocument2;
    all:=frm.Get_links;
       len:=all.length;
        for j:=0 to len-1 do
         begin
           item:=all.item(j,varempty);
           ListBox1.Items.Add(item.InnerText+' ~ '+item.href); //文字和相应的连接
    
           //根据上面那个Pos判断  item.InnerText  里包含你要点击的内容
    
          //然后  Webbrowser1.Navigate(item.href);  ................................
         end;
    end;
    end;
    

      

  • 相关阅读:
    HTTP状态码
    CEFsharp使用代理及切換
    powershell生成时间戳13和10位
    不用Root卸载手机自带应用
    夜间浏览更护眼
    windows 10 1709精简版安装 Microsoft Store
    在elementary os上安装brave 浏览器
    单语言精简版win10下中文网页无法正常
    为输出添加序号
    SpringBoot对静态资源的映射规则
  • 原文地址:https://www.cnblogs.com/tmdsleep/p/4584590.html
Copyright © 2011-2022 走看看