现在OA系统、生产管理系统都是B/S结构,很多的办公室工作都要用浏览器操作。自己会一点C# winform开发,就做个小工具自动化处理一些繁琐的操作。

我的开发环境是:win7旗舰版+VS2010(或visual studio2017)

1、打开VS2010 - 文件 - 新建 - 项目

(默认是windows窗体应用程序, .net framework4),将项目[名称]改为auto,点确定后,出现form1设计窗口。

2、在界面上找到并点击[工具箱]选项卡,用鼠标将[button]控件拖到form1上。

3、双击[button]控件,开始编写C#代码

在光标处,即button1_Click函数中写入代码,如下:

private void button1_Click(object sender, EventArgs e)
{
SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();
}

4、会提示SHDocVw缺少引用。得添加COM引用。找到解决方案资源管理器选项卡,在[auto]下面的[引用]上点鼠标右键 - 添加引用

从选项卡[com]中找到Microsoft Internet Controls,点确定后添加,错误提示消失。

5、继续修改button1_Click函数如下:

private void button1_Click(object sender, EventArgs e)
{
SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();
object Empty = ;
IE.Visible = true;
object URL1 = "http://www.baidu.com";
IE.Navigate2(ref URL1, ref Empty, ref Empty, ref Empty, ref Empty);
do
{
System.Threading.Thread.Sleep();
} while (IE.Busy);
var IE_doc = (mshtml.HTMLDocument)IE.Document;
var kw_input = (mshtml.HTMLInputElementClass)IE_doc.getElementById("kw"); //获取输入框
//kw_input.focus();
kw_input.value = "hello world";
var su_input = (mshtml.HTMLInputElementClass)IE_doc.getElementById("su"); //获取提交按键
su_input.click();
}

6、又出现mshtml缺少引用的提示。与第4步的添加COM引用类似,这次要添加.net引用。从.net选项卡中找到Microsoft.mshtml,点确定。

7、又出现mshtml.HTMLInputElementClass 无法嵌入互操作类型错误提示。在解决方案管理器中的[引用]下面的Microsoft.mshtml上点鼠标右键-属性-嵌入互操作类型,将值true改为false

8、好了。按F5运行,弹出form1界面,点击button1.(如果你和我一样装了360.会弹出进程防护,当然是误报。选择允许操作,勾选不再提醒,还可以加入白名单),将会打开新的浏览器并导航到百度搜索hello world.

C#自动化操作IE浏览器系列之一打开新的浏览器并导航到百度进行搜索的更多相关文章

  1. 浏览器拦截js打开新窗口

    最近做项目时,遇到的问题"想通过javascript在浏览器新标签页或新窗口打开一个新的页面,结果被浏览器大大无情给拦截了"业务需求:前端提交数据到后端,后端返回url,然后在新窗 ...

  2. angularjs 中state.go 跳转并且打开新的浏览器窗口

    包子最近遇到业务人员提的非常无厘头的需求,就是调页面的时候,一定要打开一个新的浏览器窗口...>o<奇葩!!! 但是我的页面都是state.go跳转的呀,我各种百度,发现,貌似state, ...

  3. 几个主流浏览器 Window.open打开新窗口 、模拟a标签打开新窗口的 表现

    Window.open打开新窗口 1.常用浏览器打开新窗口(正常打开window.open)的的不同表现形式(PC/移动端) 2.Window.open在异步处理中打开(_blank) a标签在异步处 ...

  4. 浏览器禁止js打开新窗口

    在项目中,有个需求是需要ajax获取新地址,然后去打开该页面地址,这样会被浏览器拦截,可以采取以下方式:1.再ajax请求先前,先创建一个新窗口 var newTab = window.open('' ...

  5. H5拖动火狐自动打开新标签

    写在前面的话:<H5拖动火狐自动打开新标签>原因是为什么百度很多了我就不细说,本文章只说我自己的解决方法... 自定义数据里写个链接,如果火狐自动打开就跳到这个链接 这个页面就写一句话:关 ...

  6. JavaScript跳转和打开新窗口

    跳转: window.location.href = "www.baidu.com"  // 跳转到百度首页,不打开新的浏览器窗口 等价于html中的<a href=&quo ...

  7. js 打开新窗口

    以前老是用window.open方法打开浏览器新窗口,但是有的浏览器会阻止打开新窗口,一劳永逸的方式是通过js伪造a标签请求打开新窗口,代码如下: var atag = document.create ...

  8. 微软出品自动化神器Playwright(Playwright+Java)系列(四) 之 浏览器操作

    写在前面 今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗? 我的国庆七天 第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺····· 第2-5 ...

  9. splinter python浏览器自动化操作,模拟浏览器的行为

    Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...

随机推荐

  1. 改变Tomcat在地址栏上显示的小猫图标

    部署在Tomcat上的项目通常在地址栏会显示一个小猫的图标,那么如何改变这个图标呢? 第一步.制作自己显示的图标 这里使用的是在线制作的方式,推荐一个在线制作的网站---比特虫:http://www. ...

  2. web站点和windows服务项目发布时如何排除指定文件

    在发布asp.net站点和windows服务项目时,有的时候这样的需求:msbuild编译之后发布到服务器指定目录时要排除指定文件,比如通过jenkins构建时,不希望覆盖原来的Web.config和 ...

  3. [转]Javascript实现图片的预加载详解

    下面的函数实现了一个我们想要的最基本的图片预加载效果 function preloadimages(arr){ var newimages=[] var arr=(typeof arr!=" ...

  4. BDD实战篇 - .NET Core里跑Specflow - 可以跑集成测试和单元测试

    这是<如何用ABP框架快速完成项目 >系列中和DevOps系列文章其中一篇文章.   BDD很赞!比TDD先进很多,能够大大提高编码效率.   上一篇文章说了如何在.NET Core里安装 ...

  5. ArrayMap 和HashMap的区别

    在以往android开发中,我们常常用key-value存储数据时,随手就会打出HashMap的代码,当数据量较小时,这种方法还不错还可以,当数据量比较多的时候,如果是PC机上,也还阔以.但是如果使用 ...

  6. Android Studio--gradle:download 过慢甚至超时timeout报错

    问题描述 今天第一次学习安卓,配置环境花了不少时间其他都比较容易的解决了 gradle 因为会从外国的网站下载东西会非常的慢(具体原理我也不清楚),所以最好让下载地址变成国内的 解决方案(最后有升级方 ...

  7. Javascript数组系列四之数组的转换与排序Sort方法

    今天我们继续来介绍 Javascirpt 数组中的方法,也是数组系列的第四篇文章,因为数组的方法众多,每篇文章我们都对数组的每个方法都有比较细致的描述,只要你能够从中成长一点点,那我们的目的就达到了, ...

  8. Python笔记(十五):匿名函数和@property

    (一)匿名函数 不想显式定义函数的时候,可以使用匿名函数. def f(x): return x*x #将匿名函数赋值给一个变量 result = lambda x:x*x print(result( ...

  9. 【PHPStorm使用手册】如何设置字体大小?

    方案一:鼠标滚轮设置 打开窗口 file -> settings -> Editor -> General, 勾上选项“Change font size(Zoom) with Ctr ...

  10. SSL里的certificate格式资料小结

    在查看相关报文的时候,发现RFC5246本身并没有对certificate的格式AlgorithmIdentifier作深入的介绍,只说其格式必须是X509v3 DER表示,思虑良久才找到方向:后者的 ...