C# 获取IFrame中body元素 (winform)

方法1.

找出iframe的b.html的src , 利用webbrowser去加载b.html

HtmlElementCollection a = webBrowser1.Document.All["loginframe"].GetElementsByTagName("iframe");
foreach (HtmlElement kk in a)
  {
     textBox1.Text = kk.GetAttribute("src");
}
或者

webBrowser1.Document.GetElementById("iframe的id").GetAttribute("src");

webBrowser1.Navigate("src");

方法2.

使用 frame的 document

webBrowser1.Document.Window.Frames["login_ifr"].Document;

方法只是抛砖引玉,大家自己去专研去把  转自:http://hi.baidu.com/dingding3224/item/8060946dac3de5166895e6d4

 HtmlDocument doc = webBrowser1.Document.Window.Frames["centerframe"].Document;doc.GetElementById("code").InnerText = "361100210009480";HtmlElement he = null;he = doc.GetElementById("btnSearch");he.InvokeMember("Click");

在使用Webbrowser时,经常会遇到网页没有加载完成就进一步进行操作,这样不但取不到控件或数据,而且会报错,这里在网上找两个一个函数,对Webbrowser加载进行等待,加载好后再进行处理:

private void Delay(int Millisecond) //延迟系统时间,但系统又能同时能执行其它任务;{DateTime current = DateTime.Now;while (current.AddMilliseconds(Millisecond) > DateTime.Now){Application.DoEvents();//转让控制权            }return;}private bool WaitWebPageLoad(WebBrowser WEB){int i = 0;string sUrl;while (true){Delay(500);  //系统延迟50毫秒,够少了吧!             if (WEB.ReadyState == WebBrowserReadyState.Complete) //先判断是否发生完成事件。{if (!WEB.IsBusy) //再判断是浏览器是否繁忙                  {i = i + 1;if (i == 2)   //为什么 是2呢?因为每次加载frame完成时就会置IsBusy为false,未完成就就置IsBusy为false,你想一想,加载一次,然后再一次,再一次...... 最后一次.......{sUrl = WEB.Url.ToString();if (sUrl.Contains("res")) //这是判断没有网络的情况下                           {return false;}else{return true;}}continue;}i = 0;}}}

下面是处理网页元素的代码示例:

 private void GetSearchPage(){try{WebBrowser mainwb = new WebBrowser();Navigate(mainwb, strAddress);//加载完后获取查询页WaitWebPageLoad(mainwb);HtmlDocument doc = mainwb.Document;HtmlElement he = null;he = doc.GetElementById("da");he.InvokeMember("Click");//输入数据进行查询WaitWebPageLoad(mainwb);HtmlDocument doc3 = mainwb.Document.Window.Frames["centerframe"].Document;doc3.GetElementById("code").InnerText = "361100210009480";//doc.GetElementById("j_password").InnerText = textBox2.Text;//doc.GetElementById("j_captcha").InnerText = textBox3.Text;HtmlElement he3 = null;he3 = doc3.GetElementById("btnSearch");he3.InvokeMember("Click");//获取查询出来的超链接WaitWebPageLoad(mainwb);HtmlDocument doc1 = mainwb.Document.Window.Frames["centerframe"].Document;HtmlElementCollection hec = doc1.GetElementsByTagName("TD");ArrayList arrHref = new ArrayList();arrHref.Clear();//string a = "";for (int i = 0; i < hec.Count; i++){if (hec[i].InnerHtml != null){//hec[i].InvokeMember("Click");if (hec[i].InnerHtml.ToString().Contains("href")){string href = hec[i].InnerHtml.ToString();arrHref.Add(href.Substring(href.IndexOf("href") + 6, href.LastIndexOf("\">") - 6 - href.IndexOf("href")));}}}foreach (string href in arrHref){WebBrowser Datawb = new WebBrowser();Navigate(Datawb, strAddress + href);WaitWebPageLoad(Datawb);HtmlDocument doca = null;doca = Datawb.Document;string b = doca.GetElementById("txtITEMcode").InnerText;arrReturn.Add(b);//GetOneRecord();//webBrowser2.Navigate(Str_Websit);//Datawb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetOneRecord);}}catch (Exception ex){MessageBox.Show(ex.ToString());}}

模拟操作网页 webBrowser相关推荐

  1. C# 使用Win32 API模拟键盘鼠标操作网页

    在webbrowser控件中的document complete 事件中设置链接到自身 private void ieFrame_DocumentCompleted(object sender, We ...

  2. 微信群控系统制作系列一——java模拟登录网页版微信

    PS:很多人咨询我怎么做手机群控系统,因此我开了个制作群控系统的系列,准备分五期讲解群控系统的制作.前两篇是基础内容. 今天做个简单的java模拟登录网页版微信. 既然要做模拟登录,那么我们一定要了解 ...

  3. python 模拟微信浏览器请求_2020-03-06 python selenium 模拟访问网页检查更新并微信通知...

    老同学说有个不错的网站,华尔街日报每天更新,但是百度网盘每24小时后就会删除,偶尔忘记去下载就再也找不到了. 简单介绍一下最后成果,在Mac下开发,Ubuntu服务器部署定时检查发送微信到指定用户.在 ...

  4. 使用 HtmlUnit 操作网页(登录58同城)

    1.导入jar包 htmlunit-2.35.0-OSGi.jar Ps:之前研究了网页的电脑端登录,发现 btn.click() 执行无效,查看众多资料未果后,突然想起还有h5页面,套入一看,完全o ...

  5. 计算机一级考试模拟题在线测试,2018年计算机一级考试在线自测模拟考场/网页版:计算机基础及MS Office应用...

    &nbsp&nbsp[导读]: 2018年计算机一级考试在线自测模拟考场/网页版:计算机基础及MS Office应用,更多全国计算机等级考试模拟试题.复习教材和培训网课,请访问易考吧计 ...

  6. Python(9):利用selenium操作网页并抓取内容

    因为项目原因,需要获取中国所有铁路线路及车次信息,但是并没有任何网站或文章直接将所有信息整合在一起提供出来,因此只能自己从页面上扒. 这里利用到了python的selenium模块,自动定位操作网页, ...

  7. au3 mysql_Autoit3操作网页实现自动化的方法

    Autoit3操作网页实现自动化的方法 发布于 2015-04-13 13:54:36 | 4249 次阅读 | 评论: 1 | 来源: 网友投递 Autoit3 本身有内置的用户自定义函数IE.au ...

  8. 页面监听,一段时间内不操作网页,就自动跳转到登录页

    需求:用户在 5 分钟内没有操作网页,就自动跳转到登录页. 环境:jquery 项目,有公共的 js 文件 . 在所有页面都引用的 js 文件中添加下面代码: //判断用户是否在5分钟内未操作页面,如 ...

  9. BOM+DOM+JavaScript读取与操作网页对象

    DOM 网页的元素有多种定义方式,那我们怎么描述或指定页面上某个元素呢.为了统一方式,产生了document object model 标准 以HTML表单为例, 文本字段前面的标题由label标签声 ...

最新文章

  1. mysql 没有mysql库_MySQL安装之后没有MySQL数据库的原因
  2. Fov手术会不会在手术中新增手术边界
  3. iOS SQLite函数总结
  4. LeetCode MySQL 262. 行程和用户
  5. 让人少奋斗十年的工作经验
  6. python install pip 区别_pip install和python -m pip install有什么区别?
  7. android --------学习流程图
  8. CentOS上安装Selenium和google Driver的过程以及问题记录
  9. cadlisp框选打印_在CAD中实现批量打印
  10. 八爪鱼采集器使用方法
  11. SQL中EXISTS的用法
  12. 汇编语言期末复习总结
  13. VOIP技术的专业性网站
  14. Internet Explorer 无法打开该 Internet 站点。请求的站点不可用
  15. 高能手办团显示服务器,高能手办团下架了 游戏下架原因介绍[多图]
  16. 适配Android Q指南
  17. web351-360(ctfshow刷题记录)
  18. WIN7下WIFI共享上网
  19. V模型,W模型,H模型介绍
  20. centos 8 编译安装hyperscan

热门文章

  1. QML资源加载和网络透明度
  2. c++线程数量的限制
  3. 浅谈C++函数的参数
  4. 工作流调度系统介绍,常见工作流调度系统对比,azkaban与Oozie对比,Azkaban介绍与特性(来自学习笔记)
  5. HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令
  6. Ubuntu14下安装svn仓库,以及权限配置
  7. 在自己笔记本电脑上如何访问虚拟机的内容、包括可以使用ssh、访问tomcat、访问nginx
  8. SQL Server pivot行列转换案例分析
  9. axure没有团队页签_Axure教程:多页签可滚动的选项卡制作
  10. jsp连接mysql显示404,SpringBoot+jsp项目启动出现404的解决方法