博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform中webBrowser模拟网页操作中遇到的问题
阅读量:6515 次
发布时间:2019-06-24

本文共 1770 字,大约阅读时间需要 5 分钟。

我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个winform内嵌webBrowser模拟网页上传文档的小工具,发现了许多问题,总结一下:

先说明的是文档是用Excel指定格式制成的表格,数据是通过循环表格数据行上传的。

需求是如果文档已经上传那么必须提示,但上传成功不必提示(因为循环上传的话会弹出很多提示框)。

代码如下:

添加引用 在扩展程序集中找到Microsoft.mshtml
using mshtml;

在窗体类上面贴标签: [ComVisible(true)]//访问 com 引用 microsoft html object library

代码如下:

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)        {            IHTMLWindow2 ihtmlWin = webBrowser1.Document.Window.DomWindow as IHTMLWindow2;            StringBuilder strAlertBuilder = new StringBuilder();            strAlertBuilder.Append("var _alert=window.alert;\n");            strAlertBuilder.Append("window.alert=function(s){\n");            strAlertBuilder.Append("window.external.alertMessage(s);}");            ihtmlWin.execScript(strAlertBuilder.ToString(), "Javascript");            if (!string.IsNullOrEmpty(alertmsg) && alertmsg.Contains("该报告编号已存在"))            {                MessageBox.Show(alertmsg);                alertmsg = null;            }            else if (!string.IsNullOrEmpty(alertmsg) && alertmsg.Contains("提交成功"))            {                alertmsg = null;            }        }     public void alertMessage(string s)        {            alertmsg = s;        }
View Code

当时在private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)事件中也试用了上述方法,效果不理想,因为很多弹窗不是网页加载完成才出来的。

另外我是在win7系统编写的,开发环境下测试是没问题的,考虑到兼容性,使用的是C#2.0 .NET Framework,但是在许多的xp系统中发现webBrowser1_Navigated经常不能触发,经测试发现,很多xp系统是没有Microsoft.mshtml类的,win7上找不到目录,我从另外一台xp机拷贝下来,目录地址是C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll,删除原有Microsoft.mshtml引用,将拷贝下来的类库添加进程序的Lib目录,并引用,引用属性设成 复制本地=True;特定版本=False,问题解决。

 

 

转载于:https://www.cnblogs.com/riddly/p/4151048.html

你可能感兴趣的文章
跟我一起学docker(四)--容器的基本操作
查看>>
磁化强度
查看>>
C/C++ 数据范围
查看>>
LVS+keepalived+nginx
查看>>
monkey如何通过uiautomatorviewer的bounds坐标点击控件
查看>>
第22章,mysql数据库-1
查看>>
【亲测】教你如何搭建 MongoDB 复制集 + 选举原理
查看>>
虚拟化网络技术
查看>>
阿里云中间件推出全新开发者服务
查看>>
56.随机产生的id重复问题
查看>>
一个快速检测系统CPU负载的小程序
查看>>
java.lang.IllegalArgumentException: No bean specified
查看>>
Wireshark and Tcpdump tips
查看>>
第一课 计算机及操作系统基础知识
查看>>
windows2003单域迁移到2008R2服务器
查看>>
cacti相关资料网站
查看>>
我的友情链接
查看>>
浅析:Android--Fragment的懒加载
查看>>
Linux操作系统目录和Linux常用的文件和目录管理命令
查看>>
DIY:自己动手做一个迷你 Linux 系统(二)
查看>>