webbrowser轻松实现自动填表

Posted 后凤凰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webbrowser轻松实现自动填表相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/xtfnpgy/article/details/14003589

 

webbrowser轻松实现自动填表

步骤如下:
 第一步:获取网页 调用Webbrowser 的Navigate系列函数。等待网页装载完成,得到document对象。 在调用 webBrowser.Document 之前,请确保 Webbrowser 网页装载完成,可以通过Webbrowser的DocumentCompleted事件进行监视。 小技巧 先指定一个变量
步骤如下:

   

第一步:获取网页
调用Webbrowser 的Navigate系列函数。等待网页装载完成,得到document对象。

在调用 webBrowser.Document 之前,请确保 Webbrowser 网页装载完成,可以通过Webbrowser的DocumentCompleted事件进行监视。

小技巧

先指定一个变量:
IsCompleted
在调用Webbrowser 的Navigate,Refresh系列函数之前,将IsCompleted设为false。
在DocumentCompleted事件中,如果 ReadyState 为 WebBrowserReadyState.Complete(值为4),则设IsCompleted为true.

调用webBrowser.Document之前对IsCompleted进行判断。如果不为true,则延时循环等待,直到IsCompleted被设为true.

   

第二步:设置网页元素数据

确保得到document对象之后,通过 GetElementById 获取网页元素,如:

htmlElement user = webBrowser.Document.GetElementById("user");
HtmlElement password = webBrowser.Document.GetElementById("password");

设置网页元素值:

user.InnerText = "myname";
password.InnerText = "123456";

小技巧
作用 SetAttribute 设置下拉框,复选框,多选框数据

下拉框:
secret.SetAttribute("value", "question1");  
复选框
rememberme.SetAttribute("Checked", "True");
多选框
cookietime.SetAttribute("checked", "checked");

当然,在SetAttribute 之前,也可以用GetAttribute取相关的属性先进行判断,再根椐需要进行设置。


第三步:提交网页数据

先取提交的按钮对象。
HtmlElement submit = webBrowser.Document.GetElementById("submit");
 

进行提交
submit.InvokeMember("click");

就是怎么简单。整个过程也就是 http get和post的过程。

当然也可以用低级点的WebRequest,还有更低级的socket来做,不过,现在的众多页面都有这样,那样的变形验证码,如果你和我一样,搞不定验证码识别,又贪图快点完成任务,上面的办法绝对是又快,又好。

   

webbrowser通过属性(tag)遍历查找元素

function GetDocLinkByHref(doc : IHTMLDocument2;str_url:string):IHTMLAnchorElement;

var
  i               : Integer;
  label_iDispatch : iDispatch;
  label_element   : IHTMLAnchorElement;
begin
  Result := nil;

  doc  := webbrowser1.document as Ihtmldocument2;
  if not Assigned(doc) then
    Exit;
  for i:=0 to doc.links.length-1 do
  begin
    label_iDispatch   := doc.links.item(i,0);
    label_element     := doc.links.item(I,0) as IHTMLAnchorElement;
    if   (AnsiPos(str_url,(doc.links.item(I,0) as IHTMLElement).getAttribute(‘tag‘,0))>0) 
    then
    begin
      Result := label_element;
      Break;
    end;
  end;
end;






































以上是关于webbrowser轻松实现自动填表的主要内容,如果未能解决你的问题,请参考以下文章

利用WebBrowser控件实现百度自动搜索

易语言怎么webbrowser1中模拟鼠标单击?

怎么能够批量自动提交网页登陆,自动填表输入?

silverlight 中使用WebBrowser打开网页时为啥总在顶层?

有啥软件能快速实现网页自动填表?

C# webBrowser1 获取提交后网页的内容